android – 从EditText及其内容创建位图图像

前端之家收集整理的这篇文章主要介绍了android – 从EditText及其内容创建位图图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在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,您可以使用它,只需删除删除侦听器的第一行.即使光标闪烁,也会为您输入的每个字符调用侦听器.

猜你在找的Android相关文章