我在Activity中有一个简单的EditText,我想从该EditText和EditText的内容创建一个Bitmap
Image.图像应该与EditText及其内容相同.
这是我想要的图像应该是什么样子,虽然这是一个EditText,但我想要一个位图应该看起来像这样.那么,我该如何实现呢?任何想法都会很棒.
这是我的代码,
public class EditTextPinchZoomActivity extends Activity { EditText editText; ImageView imageView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); imageView = (ImageView) findViewById(R.id.image_view); editText = (EditText) findViewById(R.id.edit_text); editText.buildDrawingCache(); } public void myOnClick(View view) { switch (view.getId()) { case R.id.btn: imageView.setImageBitmap(editText.getDrawingCache()); break; default: break; } } }
解决方法
您可以通过构建绘图缓存来获取位图.这应该工作.
EditText edit = (EditText)findViewById(R.id.edit); edit.buildDrawingCache(); ImageView img = (ImageView)findViewById(R.id.test); img.setImageBitmap(edit.getDrawingCache());
Lalit当您尝试在onCreate方法中构建缓存时,绘图尚未发生,因此drawingCache应该没有任何内容.将buildDrawingChache方法放在onClick方法中.或者在onCreate中使用以下代码.
ViewTreeObserver vto = editText.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { editText.buildDrawingCache(); } });
但是,我认为在onClick方法中构建缓存将是适当的,因为屏幕将被绘制.另外我重新编译的是,如果在onCreate之后输入文本,那么你应该在之后构建缓存.所以尝试第一种方法.
ViewTreeObserver
它是一个视图或视图组的全局布局监听器,当任何更改为布局时,它将继续调用.在通常情况下,我需要在onCreate方法中获取宽度和高度的视图.没有这个值,始终为0,因为没有绘制或测量.
假设您需要在输入时继续更新edittext的imageview,您可以使用它,只需删除我删除侦听器的第一行.即使光标闪烁,也会为您输入的每个字符调用侦听器.