我面临一个奇怪的问题。 当我使用以下代码添加edittext时:
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
中的edit.requestFocus()
进行绘制。
我在onTouchMethod
中调用{{1}}虽然它没有在焦点请求中显示输入键盘。任何想法如何使edittext接受文本和显示输入键盘?
提前致谢。
答案 0 :(得分:1)
您的EditText不属于View层次结构,因为您从未将其作为子视图添加到视图组中;因此,它不会接收触摸事件(除其他外),除非您在视图组中实现它。
致电addView(edit)
并将edit.layout(0, 0, (int)searchPane[W], (int)searchPane[H])
移至onLayout
。
这可能不会那么简单,创建自定义视图是一项高级任务 - 您确定使用现有视图布局中的一个(或组合)是不可能的吗?
如果没有,您应该阅读http://developer.android.com/training/custom-views/index.html
答案 1 :(得分:0)
唯一对我有用的组合:
Warning: Failed form propType: You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.
将输入模式添加到活动
edit.requestFocus()
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(edit, InputMethodManager.SHOW_FORCED);