Android imeOptions Change Programmatic

时间:2013-07-06 09:07:09

标签: android

我有两个EditText txtPassword,txtEmail基于radiobutton更改事件我只是隐藏并显示txtPassword字段 我只想用porgrammatic来改变ImeOptions,因为我编写了以下代码

txtPassword.setImeOptions(EditorInfo.IME_ACTION_DONE);
txtEmail.setImeOptions(EditorInfo.IME_ACTION_NEXT); 
但这不起作用。当我观察软键盘时,这显示了我在txtEmail中完成的操作(只是因为在收音机改变之前只有txtEmail是可见的所以自动完成出现) 但是在密码字段中手动focous后,如果我观察到带有电子邮件字段的软键盘,它会自动使用下一个imeOptions进行更改。我只想要一个txtEmail是可见的,而不是它已经完成imeOptions,如果txtPassword,txtEmail都可见,而txtEmail接下来有ImeOptions,而在txtPassword中它显示完成了imeOptions。在此先感谢。

修改

radiologin.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group,int checkedId) {
// checkedId is the RadioButton selected
if (checkedId == R.id.radioWithoutPassword) {
txtPassword.setVisibility(View.GONE);
txtEmail.setBackgroundDrawable(getResources().getDrawable(R.drawable.both_corner));
txtEmail.setImeOptions(EditorInfo.IME_ACTION_DONE);
}
else
{
txtEmail.setImeOptions(EditorInfo.IME_ACTION_NEXT);
txtPassword.setImeOptions(EditorInfo.IME_ACTION_DONE);
txtPassword.setVisibility(View.VISIBLE);
txtEmail.setBackgroundDrawable(getResources().getDrawable(R.drawable.top_corner));
}
}
});

2 个答案:

答案 0 :(得分:1)

试试这个,

final EditText passwordEditText = new EditText(this);
    final EditText emailEditText = new EditText(this);
    RadioButton button = new RadioButton(this);
    button.setOnCheckedChangeListener(new RadioButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // TODO Auto-generated method stub
            if(isChecked){
                passwordEditText.setVisibility(View.INVISIBLE);
                emailEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);
            }else{
                emailEditText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
            }
        }
    });

并始终设置passwordEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

答案 1 :(得分:0)

我有同样的问题。与我合作的是添加android:singleLine="true",我提到任何imeOptions或下一个焦点值。我得到了预期的结果。在第一个editText键盘显示下一个如果另一个editText可见,否则它显示完成:-p