在安卓中,如何将EditText绘制到画布上?

3

我希望进行绘图

EditText username = new EditText(context);

将内容定位到画布上的特定位置

protected void onDraw(Canvas canvas) {

}

在不使用XML布局的情况下,是否可以在Java文件中基于x,y坐标绘制它?

2个回答

3

你可以在画布上绘制EditText,这里有一个提示:

EditText ed;
.
.
.
.
.   
ed.setDrawingCacheEnabled(true);
Bitmap b = ed.getDrawingCache();
canvas.drawBitmap(bitmap, l, t, r, b, null);

您可以通过以下方式在运行时创建/初始化EditText

代码示例:

EditText editText = new EditText(this);
editText.setText("My Text");
editText.setWidth(180);         
editText.setBackgroundColor(Color.WHITE);

我正在尝试运行程序,但目前遇到的问题是ed.setDrawingCacheEnabled(true);。虽然Eclipse没有显示任何错误,但程序无法在模拟器上运行。我应该将这个命令放在特定的类中吗?我已经尝试了onDraw(){}和public TitleView(Context context){}。 - hoss24
请解释一下"程序在模拟器上无法运行"的意思。 - M-Wajeeh
当我在代码中加入"ed.setDrawingCacheEnabled(true);"时,模拟器会显示“StudentConnect(我的应用程序名称)已停止运行”。如果不加入这段代码,它就可以正常运行。而且我已经使用EditText ed;对EditText进行了初始化。 - hoss24
2
我猜你没有理解那是一个提示。无论如何,我已经添加了代码以在运行时进行初始化。只要确保不要在onDraw()方法中创建实例,以避免大量的垃圾回收。 - M-Wajeeh
1
好的,我很感激不仅仅是被给出答案,我会四处寻找并进行实验。 - hoss24
显示剩余3条评论

-2

在Android中,您无法将EditText绘制到画布上。这不是Canvas的用途。

您可以使用FrameLayout,在其中放置Canvas,并将EditText放在Canvas的顶部。


1
你不能把Canvas放在FrameLayout里面,因为这不是FrameLayout的作用。 - pskink
@Pheonixblade9 - M-WaJeE4并没有“在画布上绘制EditText” - 他是从EditText中提取位图,然后将其绘制到画布中。这样不应该可以吗? - Howard Pautz
1
@HowardPautz 你可能是对的 - 也许我没有仔细阅读问题 :) - Codeman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接