我目前正试图为我的应用程序提供一个直观的界面。Edittext onFocusChangeListener在不需要时被调用
我有一个oncreate函数来激活负载上的键盘工作正常。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_popup);
reminder = (CheckBox)findViewById(R.id.reminder_option);
addTask();
taskField = (EditText)findViewById(R.id.task_name);
taskField.setHorizontallyScrolling(true);
taskField.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean focus) {
if (focus) {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
}
});
taskField.requestFocus();
当单击该复选框,键盘是我使用2的内部类,一TimePickerFragment两者实现onDate/TimesetListener一个DatePickerFragment驳回
if(checked){
imm.hideSoftInputFromWindow(taskField.getWindowToken(), 2);
dateTitle.setVisibility(View.VISIBLE);
dateSelector.setVisibility(View.VISIBLE);
timeTitle.setVisibility(View.VISIBLE);
timeSelector.setVisibility(View.VISIBLE);
datetimesperator.setVisibility(View.VISIBLE);
。
现在的问题是,当从弹出窗口设置时间或日期时,键盘被重新激活。
我试图从Stop EditText from gaining focus at Activity startup
在布局设置可聚焦从EditText上移除焦点的解决方案,我下面的代码添加到如果选中声明。 RelativeLayout layout =(RelativeLayout)findViewById(R.id.add_container); layout.requestFocus();
然而,在设置日期或时间后,在相应的对话框中,尽管焦点已从edittext元素移开,但键盘仍处于激活状态。
如何在退出DatePickerDialog或TimePickerDialog时防止键盘被激活?
感谢您的回复,您的建议帮助我找到了解决方案,我意识到我基本上只是需要键盘出现在第一次创建,然后再也不会。 因此我使用了: imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 在oncreate方法中,并删除了焦点侦听器 –