如何使EditText可点击?

时间:2015-06-25 15:11:28

标签: android android-canvas

很抱歉,如果它与this one有一些重复的问题,我已经尝试了所提供的解决方案以及其他一些帖子,但它们都没有为我工作。

我已经绘制了EditText,但它不可点击(触摸后没有键盘出现)

public class GamePanel extends SurfaceView implements SurfaceHolder.Callback{
private LinearLayout lL;
private EditText editText;
@Override
public void surfaceCreated(SurfaceHolder holder){
    lL = new LinearLayout(getContext());

    editText = new EditText(getContext());

    editText.setFocusableInTouchMode(true);
    editText.setClickable(true);
    editText.requestFocus();

    editText.setText("Hello World");
    editText.setVisibility(View.VISIBLE);
    lL.addView(editText);
    lL.setDrawingCacheEnabled(true);
    lL.measure(canvas.getWidth(), canvas.getHeight());
    lL.layout(0, 0, canvas.getWidth(), canvas.getHeight());
    lL.bringChildToFront(editTextView);
}

@Override
public void draw(Canvas canvas){

    canvas.drawBitmap(lL.getDrawingCache(),50,50,null);
}
}

我也从我看到的解决方案中尝试了这个:(使用xml创建EditText)

<?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">

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
</RelativeLayout>

将EditText更改为此并删除canvas.drawBitmap():

EditText editText = (EditText)findViewById(R.id.editText1);

但是当我这样做时,应用程序总是强制关闭。

主要问题是如何使EditText可点击并显示软键盘,就像刚从xml中放入它而不在画布上绘制它一样

3 个答案:

答案 0 :(得分:0)

您可以设置布局的属性,如android:descendantFocusability="beforeDescendants"android:focusableInTouchMode="enter code here"

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

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
</RelativeLayout>

愿这个有用;)

How to make EditText not focused when creating Activity

答案 1 :(得分:0)

默认情况下,如果单击edittext,除非您执行了更改操作的操作,否则键盘将可见。无需在xml布局中设置可点击,可聚焦。只需创建一个edittext&amp;用它。

答案 2 :(得分:0)

如果您想使用编辑文本打开date picker dialog之类的内容,可以使用set focusable to flase.因此点击编辑文字会打开对话框等。

示例: android:focusable="flase"