Android edittext.setOnFocusChangeListener
我对如何在android上定制键盘感兴趣,我看了这一页 我不明白这个页面中的一个方法。我尝试过,但每次我都发现不同的意思 如果有人知道这个页面,请帮助我,focus_listener.writer写了什么。我知道我们在关键方法上创建了新的Edittext。我知道当我们单击Edittext时,它会复制,当它的“复制”焦点改变时?当我们再次单击edittext时,键盘是可见的,因为复制可见的edittext,所以焦点没有变化,键盘变得不可见。我明白,但我完全相信我犯了错误。请帮帮我Android edittext.setOnFocusChangeListener,android,Android,我对如何在android上定制键盘感兴趣,我看了这一页 我不明白这个页面中的一个方法。我尝试过,但每次我都发现不同的意思 如果有人知道这个页面,请帮助我,focus_listener.writer写了什么。我知道我们在关键方法上创建了新的Edittext。我知道当我们单击Edittext时,它会复制,当它的“复制”焦点改变时?当我们再次单击edittext时,键盘是可见的,因为复制可见的edittext,所以焦点没有变化,键盘变得不可见。我明白,但我完全相信我犯了错误。请帮帮我
// Find the EditText
EditText edittext= (EditText)findViewById(...);
// Make the custom keyboard appear
edittext.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override public void onFocusChange(View v, boolean hasFocus) {
if( hasFocus ) showCustomKeyboard(v); else hideCustomKeyboard();
调用
OnFocusChangeListener
时
当视图的焦点状态更改时要调用的回调的接口定义
什么是焦点更改
抽象void onFocusChange(视图v,布尔hasFocus)
当视图的焦点状态更改时调用
这很简单,当你作为用户点击编辑文本时,它会得到“焦点”,Android会显示系统键盘,让用户在里面写东西。由于您希望在每次EditText(或您想要的任何内容)获得焦点时显示自定义键盘而不是默认键盘,因此您可以调用方法showCustomKeyboard
,即:
public void showCustomKeyboard( View v ) {
mKeyboardView.setVisibility(View.VISIBLE);
mKeyboardView.setEnabled(true);
if( v!=null ) ((InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(v.getWindowToken(), 0);
}
mKeyboardView
是我们应该显示的键盘,而不是原来的键盘,而这一行:
if( v!=null ) ((InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(v.getWindowToken(), 0);
用于隐藏键盘上的默认设置(hideSoftInputFromWindow
)
如果您理解我上面所说的,您就可以理解什么是else hideCustomKeyboard()代码>意味着,它的工作原理与普通Android一样,当用户离开编辑文本时,我们不需要再显示键盘,但因为这一次是你的键盘,你应该关心显示/隐藏它
“它进行复制,以及它的“复制”焦点何时更改?”
我不明白你的意思,它什么都不复制
“当我们再次单击edittext时,键盘处于可见状态,由于复制可见的edittext,因此焦点没有变化,键盘变得不可见”
不,如果您再次单击相同的编辑文本,它仍将具有焦点,当您更改焦点时,键盘将被隐藏哦,天哪,我忘记我最初和你一样理解,但在我说了如何隐藏按键或2触式编辑文本后,我们不能用2触式编辑文本隐藏键盘好的,谢谢。