接下来,上一个,键盘上方的完成按钮

时间:2014-03-01 05:36:19

标签: android keyboard

我知道here之前会问这个问题。但是没有找到解决方案。

我想要的是键盘上方有Next,Previous和Done按钮 (我知道它模仿iphone键盘,但我对它的要求无能为力)。

像这样:  here

我现在尝试的是::

所以,我在一个布局中选了三个按钮并分配了属性android:alignParentBottom="true" 并在清单中添加android:windowSoftInputMode="adjustResize"

看起来像这样::
enter image description here

我使用“下一步”“前一个按钮来做和做的是:

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();
            }
        }
 });

这允许我使用下一个和上一个按钮来回移动。

现在出现问题::

  1. 我知道它有点脏。请指导是否有更好的方法来使用下一个和上一个按钮来回移动。

  2. 我想只在键盘可见时显示按钮,否则隐藏它们。我该怎么办?

  3. “完成”按钮,我需要隐藏它显示的键盘,为此我试过这个,但是,它有时不起作用。 :

    InputMethodManager imm = (InputMethodManager)getSystemService (Context.INPUT_METHOD_SERVICE);

    if(imm != null){

    imm.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);

    }

  4. 如何隐藏建议。

  5. 请帮助我。

    感谢。

1 个答案:

答案 0 :(得分:1)

我知道你说这是一项要求,但这些要求是不可能的。首先,没有回调或方法来检查或观察输入方法的可见性。人们会建议那里有一些黑客,但他们只是那些 - 黑客。你不应该依赖它们。

其次,对于你的焦点遍历,幸运的是Android有很好的内置支持。查看TextView / EditText上的nextFocusDown和类似属性。在大多数情况下,您甚至不必指定这些,因为Android非常擅长为您找出合适的订单。如果您需要以编程方式执行此操作,则可以使用requestFocus()方法:

editText.requestFocus(View.FOCUS_DOWN);

或者您可以使用FOCUS_UP转到上一个视图。

编辑:此外,您可以使用属性inputType =“text | textNoSuggestions”来摆脱大多数输入法的建议栏(尽管他们不需要尊重它,许多人不这样做。)