我知道here之前会问这个问题。但是没有找到解决方案。
我想要的是键盘上方有Next,Previous和Done按钮 (我知道它模仿iphone键盘,但我对它的要求无能为力)。
像这样:
我现在尝试的是::
所以,我在一个布局中选了三个按钮并分配了属性android:alignParentBottom="true"
并在清单中添加android:windowSoftInputMode="adjustResize"
。
看起来像这样::
我使用“下一步”“前一个按钮来做和做的是:
int next=1,prev=1;
public boolean onTouch(View arg0, MotionEvent arg1){
prev=next=1;
return false;
}
});
edUserName.setOnTouchListener(new View.OnTouchListener(){
public boolean onTouch(View arg0, MotionEvent arg1){
prev=next=2;
return false;
}
});
edCity.setOnTouchListener(new View.OnTouchListener(){
public boolean onTouch(View arg0, MotionEvent arg1){
prev=next=3;
return false;
}
});
btnNext.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0) {
if(next==1){
next++;
prev++;
edUserName.requestFocus();
}else if(next==2){
next++;
prev++;
edCity.requestFocus();
}
}
});
btnPrevious.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0) {
if(prev==2){
prev--;
next--;
edName.requestFocus();
}else if(prev==3){
prev--;
next--;
edUserName.requestFocus();
}
}
});
这允许我使用下一个和上一个按钮来回移动。
现在出现问题::
我知道它有点脏。请指导是否有更好的方法来使用下一个和上一个按钮来回移动。
我想只在键盘可见时显示按钮,否则隐藏它们。我该怎么办?
“完成”按钮,我需要隐藏它显示的键盘,为此我试过这个,但是,它有时不起作用。 :
InputMethodManager imm = (InputMethodManager)getSystemService
(Context.INPUT_METHOD_SERVICE);
if(imm != null){
imm.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);
}
如何隐藏建议。
请帮助我。
感谢。
答案 0 :(得分:1)
我知道你说这是一项要求,但这些要求是不可能的。首先,没有回调或方法来检查或观察输入方法的可见性。人们会建议那里有一些黑客,但他们只是那些 - 黑客。你不应该依赖它们。
其次,对于你的焦点遍历,幸运的是Android有很好的内置支持。查看TextView / EditText上的nextFocusDown
和类似属性。在大多数情况下,您甚至不必指定这些,因为Android非常擅长为您找出合适的订单。如果您需要以编程方式执行此操作,则可以使用requestFocus()
方法:
editText.requestFocus(View.FOCUS_DOWN);
或者您可以使用FOCUS_UP
转到上一个视图。
编辑:此外,您可以使用属性inputType =“text | textNoSuggestions”来摆脱大多数输入法的建议栏(尽管他们不需要尊重它,许多人不这样做。)