在ListActivity中编辑文本ListView在键盘出现时失去焦点

时间:2011-08-02 20:54:51

标签: android listview focus android-edittext listactivity

我搜索并搜索了这个问题的答案,看起来像答案的一切都没有用,所以我想我会问。

我在EditText添加了几个ListView个框,这是ListActivity的基础。当我将windowSoftInputMode设置为adjustPan并点击EditText时,它会一直有效,直到您再次点击它然后键盘覆盖它为止。当我使用adjustResize时它会工作,除非键盘出现时EditText失去焦点,我必须再次点按它才能输入。

我试图找出如何捕获onResize,但这似乎与View有关,而不是活动,我不完全确定如何倾听它。我还尝试了EditText框和ListView本身的各种可聚焦设置(我读过的其他帖子中的建议)似乎也没有帮助。

7 个答案:

答案 0 :(得分:61)

您真正需要做的就是将其应用于ListView:

<强> XML:

android:descendantFocusability="afterDescendants"

<强>爪哇:

listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);

答案 1 :(得分:2)

在我的情况下,完美的工作是添加类似代码来表示:

android:windowSoftInputMode="adjustPan"

答案 2 :(得分:0)

您是否尝试adjustResize后确保通过EditText之类的操作将焦点重置为EditText.requestFocus();,以便重新关注并且用户不必再次点击它。您可以使用EditText.isFocused()来查看它是否在调试日志语句中集中(true)或不集中(false)。

您可能需要使用focusable将字段设置为SetFocusable(),但要小心,因为这可能会从ListView本身带走焦点并阻止您稍后滚动或选择一些内容,这样你就必须使用可设置为焦点的设置,并且是有针对性的东西。

答案 3 :(得分:0)

我在项目中遇到了完全相同的问题。

要解决此问题,我已将[{1}}子类化并按下“后退”按钮,以确保我的EditText在此时清除焦点。

检查this solution,了解如何操作。

祝你好运。

答案 4 :(得分:0)

mViewHolder.editText = (EditText)convertView.findViewById(R.id.editText1);
            mViewHolder.editText.setTag(position);
            mViewHolder.editText.setTextColor(0xFF000000);
            mViewHolder.editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                public void onFocusChange(View v, boolean hasFocus) {
                    if (!hasFocus) {
                        EditText et =(EditText)v.findViewById(R.id.editText1);
                        editTextArrayList.set(position,et.getText().toString().trim());
                    }
                }
            });

您好,以下链接可能会对您有所帮助http://mylearnandroid.blogspot.in/2014/06/listview-problem-while-scrolling.html

答案 5 :(得分:0)

对我来说,以下组合帮助了我(尤其是第3号):

1)将以下内容添加到清单文件中的相关活动中,这需要调整ListView的大小以仅填充softKeyboard上方的区域:

android:windowSoftInputMode="adjustResize"

2)使用下面的ListView只有在没有后代想要它时才会获得焦点。后代(EditText)需要获得并保持焦点。

<ListView
...
android:descendantFocusability="afterDescendants"/>

3)在键盘正上方自动显示/隐藏拼写建议栏会一直触发ListView刷新。我为ListView中的任何EditText关闭了建议。

<EditText
...
android:inputType="textNoSuggestions|textVisiblePassword" />

答案 6 :(得分:0)

回收者视图效果最佳,无需随处乱搞任何其他属性。