android settext无效,在调用 setText() 并使( ) 无效后,在画布上正确地调用,TextView无法绘制_android_开发99编程知识库...

本文讲述了如何在Android应用中使用TextView显示用户输入并更新Bitmap图像,探讨了`invalidate()`方法的使用误区,以及可能需要重写onDraw()方法来实现预期的视图更新,并涉及了缓存技术以提高性能。
摘要由CSDN通过智能技术生成

我的目的是製作一個 Bitmap 圖像顯示用戶提供的文本,然後圖像可以保存到緩存中。

調用 TextView.setText() 和 TextView.invalidate() 之後,TextView 沒有像我預期的那樣更新。 它仍然在 Canvas 上繪製以前的文本。@Override

public void onClick(View v) {

//tv is a TextView and et is an EditText.

tv.setText(et.getText().toString());

tv.invalidate();

//if measure() isn't called, getMeasuredWidth() returns previous value.tv.measure(0, 0);

int screenWidth = (int) tv.getMeasuredWidth();

int screenHeight = (int) tv.getMeasuredHeight();

if (screenHeight * screenWidth!= 0) {

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(

screenWidth, screenHeight);

Bitmap testB;

testB = Bitmap.createBitmap(screenWidth, screenHeight, Bitmap.Config.ARGB_8888);

Canvas c = new Canvas(testB);

tv.draw(c);

//tv draws previous String on Canvas c.

iv = (ImageView) findViewById(R.id.image);

iv.setLayoutParams(layoutParams);

iv.setBackgroundColor(Color.RED);

iv.setImageBitmap(testB);

}

}

文檔說明public void invalidate ()

使整個視圖無效。如果視圖可見,將在將來的某個位置調用 onDraw(android.graphics.Canvas) 。 這必須從用戶界麵線程調用。 要從非ui線程調用,請調用 postInvalidate() 。

這是否意味著我應該重寫 onDraw() 方法?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值