【问题标题】:Focus issue in ListView EditText display in Dialog in AndroidListView EditText 中的焦点问题在 Android 的 Dialog 中显示
【发布时间】:2016-04-02 00:27:24
【问题描述】:

我必须在 Dialog 上显示 ListView 包含 EditText,用户可以在 EditText 中键入文本,并且其内容不应丢失。

例如,我在列表视图中有 10 个 EditText,如果用户在第一个 EditText 中键入“11”,在第二个 EditText 中键入“22”,在第三个 EditText 中键入“33”并在该用户滚动后向下滚动第十个 EditText 的列表视图再次在第一个 EditText 时第一个 EditText 中的值应该是“11”,对于第二个 EditText“22”等等,我通过在 EditText 中更改文本时设置 EditText 来实现这一点。

我使用 NiftyDialog 作为对话框 (Link)。问题是 EditText 随机获得焦点(有时有效,有时无效)。

我已经设置了

android:descendantFocusability="afterDescendants"

在ListView中设置

android:windowSoftInputMode="adjustPan"

在清单文件中,但无法正常工作。

这可能是什么问题?

【问题讨论】:

  • 你需要展示更多的代码!
  • 创建一个活动,显示 NiftyDialog(在其中设置自定义视图)并在该自定义视图中获取 listview,在其行文件中获取 EditText,在 ArrayList 中获取 10 个虚拟数据并设置为 BaseAdapter,而不是检查是否您是否有任何焦点问题。
  • @AADTechnical:如果您对此问题有任何建议或替代解决方案,请告诉我。
  • 设置你的listview android:clickable="false" 并使用你的editText android:clickable/touchable ="true" 来监听editText的触摸/点击事件。并在您的自定义适配器中使用 View holder,然后将值 11、22 显示为 EditText 提示。这不会触发editText textwatcher、编辑器监听器。
  • @Jayesh,我希望它对你有用,vikaskanani.wordpress.com/2011/07/27/…

标签: android android-listview android-edittext focus android-dialog


【解决方案1】:

使用另一个大小为 10 的字符串类型列表并在每个字符串的开头放置空白现在在 edittext 和 onTextchange 方法上添加一个 textwatcher 为该特定位置重新分配列表中的字符串值。请提供您的适配器代码将做剩余

【讨论】:

  • 我已经做到了,我可以在 EditText 中保持输入的值,同时向上滚动并 dwon 列表视图,问题只是我有时在某些 EditText 中没有光标。当我点击它时,我也可以输入 EditText。
  • 保持最后一个活动编辑字段的位置,如果最后保持位置和getview位置相同,则设置请求焦点,否则不
【解决方案2】:

您是否明确要求 EditText 获得焦点? 如myEditText.requestFocus()

从您的问题来看,您似乎希望在用户向下滚动时更改焦点编辑文本。您能否阐明您期望的行为以及正在发生的情况?

【讨论】:

    【解决方案3】:

    不久前我在EditText 焦点上遇到了这个问题,并意识到仅在现有视图上设置属性是行不通的。在我的情况下,它是为了避免键盘弹出,但我相信,同样的解决方案也适用于你的情况。

    在所有其他视图的顶部添加一个带有android:focusable="true"android:focusableInTouchMode="true" 的虚拟布局。这样,焦点将转到此布局(位于顶部),并且 ListView 中的 EditText 的随机焦点问题将得到解决。

        <!-- Stop auto focussing the EditText -->
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:background="@android:color/transparent"
            android:focusable="true"
            android:focusableInTouchMode="true">
        </LinearLayout>
    

    【讨论】:

      猜你喜欢
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      相关资源
      最近更新 更多