我有一个简单的EditText内部的Activity,我想创建一个Bitmap从形象EditText和content of the EditText.本Image应该是相同EditText和content.
Here is how I want the Image should look like虽然这是一个EditText,但我想要一个看起来应该与此相同的Bitmap.那么,我怎样才能做到这一点?任何想法都会很棒.

这是我的代码,
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
ble*_*enm 12
您可以通过构建绘图缓存来获取位图.这应该工作.
EditText edit = (EditText)findViewById(R.id.edit);
edit.buildDrawingCache();
ImageView img = (ImageView)findViewById(R.id.test);
img.setImageBitmap(edit.getDrawingCache());
Run Code Online (Sandbox Code Playgroud)
Lalit当你尝试在onCreate方法中构建缓存时,绘图还没有发生,所以drawingCache应该没有任何东西.将buildDrawingChache方法放在onClick方法中.或者在onCreate中使用以下代码.
ViewTreeObserver vto = editText.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
editText.buildDrawingCache();
}
});
Run Code Online (Sandbox Code Playgroud)
但我认为在onClick方法中构建缓存是正确的,因为那时将绘制屏幕.我重新编写的其他内容是,如果你在onCreate之后输入文本,那么你应该在那之后构建缓存.所以尝试第一种方法.
ViewTreeObserver
它是一个视图或视图组的全局布局监听器,当对布局进行任何更改时,它会不断被调用.我通常在我需要在onCreate方法中获取视图宽度和高度的情况下使用它.如果没有这个值,由于没有进行绘图或测量,因此该值始终为0.
假设您需要在键入时不断更新edittext的imageview,您可以使用它并删除我删除侦听器的第一行.即使光标闪烁,也会为您键入的每个字符调用侦听器.