我目前正在尝试为我的应用程序提供一个直观的界面。
我有一个 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();
当复选框被点击时,键盘被关闭
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);
我正在使用 2 个内部类,一个 TimePickerFragment 和一个 DatePickerFragment 都实现了 onDate/TimesetListener。
现在的问题是,当从弹出窗口中设置时间或日期时,键盘会重新激活。
我尝试了Stop EditText 的解决方案,以在 Activity 启动时获得焦点
在布局设置为可聚焦以从编辑文本中移除焦点的地方,我将以下代码添加到 if checked 语句中。相对布局布局 = (RelativeLayout)findViewById(R.id.add_container); layout.requestFocus();
但是,在设置日期或时间后,在相应的对话框中,尽管焦点已从 edittext 元素移开,但键盘仍处于激活状态。
退出 DatePickerDialog 或 TimePickerDialog 时如何防止键盘被激活?