很抱歉,如果它与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中放入它而不在画布上绘制它一样
答案 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>
愿这个有用;)
答案 1 :(得分:0)
默认情况下,如果单击edittext,除非您执行了更改操作的操作,否则键盘将可见。无需在xml布局中设置可点击,可聚焦。只需创建一个edittext&amp;用它。
答案 2 :(得分:0)
如果您想使用编辑文本打开date picker dialog
之类的内容,可以使用set focusable to flase.
因此点击编辑文字会打开对话框等。
示例: android:focusable="flase"