android - 如何使 EditText 在 Canvas 上可点击?

标签 android android-canvas

我想在 Canvas 上点击编辑文本。 我想从用户那里获取输入并将该编辑文本设置为 Canvas 。

这是我的代码:

@Override
protected void onDraw(Canvas canvas) {


    for (Point point : points) {

        LinearLayout lL = new LinearLayout(getContext());

           EditText editTextView = new EditText(getContext()); 

           editTextView.setFocusableInTouchMode(true);
           editTextView.setFocusable(false);
           editTextView.setClickable(true);

           editTextView.setText("sadsdadadadadsadasds");
           editTextView.setVisibility(View.VISIBLE);
           lL.addView(editTextView);
           lL.setDrawingCacheEnabled(true);

            lL.measure(canvas.getWidth(), canvas.getHeight());
            lL.layout(0, 0, canvas.getWidth(), canvas.getHeight());

            canvas.drawBitmap(lL.getDrawingCache(),  point.x, point.y, mPaint);
     //   canvas.drawText("(0,0)", point.x, point.y, mPaint);




      //  Log.d(TAG, "Painting: "+point);
    }
}


@Override
public boolean onTouch(View v, MotionEvent event) {
    float x = event.getX();
    float y = event.getY();
    InputMethodManager inputMethodManager;
    TextView tv1=new TextView(getContext());
    LinearLayout lL = new LinearLayout(getContext());

    // return super.onTouchEvent(event);
    Point point = new Point();
    point.x = (int) event.getX();
    point.y = (int) event.getY();
    points.add(point);
    invalidate();
    return true;
}

错误:

问题是 EditText 被放置在 Canvas 上但不能点击

最佳答案

首先不要在 Canvas 上绘制它,因为触摸仅应用于该 Canvas ,在您的 Activity/xml 中绘制编辑文本和您的自定义 View ( Canvas ),如果仍然不可点击,请尝试将编辑文本置于最前面

yourLayout.bringChildToFront(yourEditText);

你的 xml 应该是这样的

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- your custom view here -->


    <!-- edittext here -->
    <EditText
        android:id="@+id/settings_text_y"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</RelativeLayout>

关于android - 如何使 EditText 在 Canvas 上可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21808582/

相关文章:

java - 将 Twitter API 添加到我的应用程序

java - java android 中的 AndroidPlot

android - 将位图转换为 Android 中的(图形)路径

android - 将 AnimationDrawable(PNG 序列)添加到 Canvas?

android - 从 onCreateWindow WebView 处理 URL

Android 设备的日志文件

Android - 带有以下文字的搜索栏

android - 如何获取 View 的位图?

android - 来自 Firebase 的数据 - android 回收器 View 重新填充

Android ActionBarSherlock 自定义 View