gpt4 book ai didi

android - 不需要时调用 Edittext onFocusChangeListener

转载 作者:行者123 更新时间:2023-11-29 21:39:44 25 4
gpt4 key购买 nike

我目前正在尝试为我的应用程序提供一个直观的界面。

我有一个 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 from gaining focus at Activity startup 的解决方案

在布局设置为可聚焦以从编辑文本中移除焦点的地方,我将以下代码添加到 if checked 语句中。 RelativeLayout layout = (RelativeLayout)findViewById(R.id.add_container); layout.requestFocus();

然而,在设置日期或时间后,在相应的对话框中,尽管焦点已从 edittext 元素移开,但键盘仍处于激活状态。

如何在退出 DatePickerDialog 或 TimePickerDialog 时防止键盘被激活?

最佳答案

关注 EditText 很棘手。据我所知,没有真正的方法可以防止 EditText 自动获得焦点。您请求关注 RelativeLayout 的方法似乎是解决此问题的最佳方法 - 即使它不是一个好的解决方案,感觉更像是一种解决方法。

我的建议是:如果可能,请尽量避免此类情况,尝试完成您需要执行的操作,例如使用 ClickListener,因为使用这些您不必处理自动假设焦点的 View 。但是,如果没有其他解决方案,您必须意识到,每次不应获得焦点的 View 可以获得焦点时,您都​​必须请求关注 RelativeLayout。您的代码没有显示您如何处理对话框,因此我无法直接帮助您,但您可以在这里找到您需要的有关对话框的所有信息:http://developer.android.com/guide/topics/ui/dialogs.html

关于android - 不需要时调用 Edittext onFocusChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17501223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com