在Canvas中添加EditText

时间:2014-01-16 14:09:17

标签: android android-canvas android-edittext

我正在努力向画布添加文字。我需要做的是,当用户点击屏幕时,会在用户点击的位置生成编辑文本。用户输入文字以及完成编辑后文本,保存列表中的文本。我知道如何获得位置并添加编辑文本。编辑文本添加成功但不可编辑,并选择能够进一步编辑。

2 个答案:

答案 0 :(得分:0)

如果目标只是在用户点击EditText时添加View,那么您无需手动绘图即可完成此操作。看一下这个例子(假设我们在你的活动中onCreate()

final RelativeLayout mainLayout = new RelativeLayout(this);
mainLayout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
setContentView(mainLayout);
mainLayout.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() != MotionEvent.ACTION_DOWN) {
            return false;
        }

        EditText editText = new EditText(YourActivity.this);

        // Add whatever you want as size
        int editTextHeight = 70;
        int editTextWidth = 200;

        LayoutParams params = new LayoutParams(editTextWidth, editTextHeight);

        //You could adjust the position
        params.topMargin = (int) (event.getRawY());
        params.leftMargin = (int) (event.getRawX());
        mainLayout.addView(editText, params);
        editText.requestFocus();

        return false;
    }
});

答案 1 :(得分:-1)

是的,您可以在EditText上绘制Canvas,这是提示:

EditText et;
.
.
.
.
.   
et.setDrawingCacheEnabled(true);
Bitmap b = et.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);