我有两个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));
}
}
});
答案 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