我遇到了一个奇怪的问题。当我使用以下代码段添加编辑文本时:
edit = new EditText(context);
edit.setInputType(InputType.TYPE_CLASS_TEXT);
edit.layout(0, 0, (int)searchPane[W], (int)searchPane[H]);
edit.setBackgroundColor(Color.TRANSPARENT);
edit.setGravity(Gravity.CENTER_VERTICAL);
edit.addTextChangedListener(SearchBox.this);
edit.setFocusable(true);
edit.setFocusableInTouchMode(true);
并使用edit.draw(Canvas)
在onDraw
方法中绘制它 View
.我在onTouchMethod
中调用edit.requestFocus()
,尽管它在焦点请求时没有显示输入键盘。任何想法如何使编辑文本接受文本并显示输入键盘?
提前谢谢。
您的 EditText 不是视图层次结构的一部分,因为您从未将其作为子项添加到视图组;因此,除非您在视图组中实现触摸事件,否则它不会接收触摸事件(以及其他内容)。
将呼叫添加到addView(edit)
并将edit.layout(0, 0, (int)searchPane[W], (int)searchPane[H])
移至onLayout
中。
它可能不会那么简单,创建自定义视图是一项高级任务 - 您确定使用现有视图布局中的一个(或组合)无法尝试做什么吗?
如果没有,您应该阅读 http://developer.android.com/training/custom-views/index.html
唯一对我有用的组合:
edit.requestFocus()
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(edit, InputMethodManager.SHOW_FORCED);
与向活动添加输入模式配对
<activity android:name="..."
android:windowSoftInputMode="adjustResize" />