有没有办法在NumberPassword模式下强制显示Android的SoftKeyboard而我的活动中没有实际的EditText?
我设法在活动开始时通过在我的AndroidManifest.xml上添加android:windowSoftInputMode="stateAlwaysVisible"
来显示键盘,因此无法通过覆盖扩展onKeyPreIme
类的CustomView
来关闭TextView
1}},并通过在我的活动中覆盖onKeyUp
来自行处理触摸事件。
如果我直接在CustomView的XML布局中添加android:inputType="numberPassword"
,则会绕过Activity的onKeyUp,并且我的CustomView和KEYCODE_ENTER中的键盘写字符会关闭我的键盘。
我想要实现的目标是:
答案 0 :(得分:2)
为了方便起见https://developer.android.com/training/keyboard-input/commands.html:
Activity
和View
类都实现了KeyEvent.Callback
接口,所以你通常应该覆盖回调方法 适当时扩展这些类。
我建议您覆盖onKeyUp
课程中CustomView
的默认实施,并将CustomView.onKeyUp
方法重定向到您的Activity
{{1}方法。
举个例子:
onKeyUp
在public class CustomView extends TextView {
private KeyEvent.Callback myKeyEventCallback;
public void setCustomKeyEventCallback(KeyEvent.Callback callback) {
myKeyEventCallback = callback;
}
...
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
return myKeyEventCallback.onKeyUp(keyCode, event);
}
}
执行此操作:
Activity
这有助于您将onKeyUp方法调用从CustomView view = ...; // here you take the reference to your custom view
view.setCustomKeyEventCallback(new KeyEvent.Callback() {
// ... other methods
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// this calls your activity's implementation of onKeyUp
MyActivity.this.onKeyUp(keyCode, event);
return false; // prevent event from firing twice
}
});
重定向到CustomView
的onKeyUp实现。