gpt4 book ai didi

Android 如何在阅读列表项计数时停止包括页脚行的 TalkBack

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

我有一个包含笔记列表的对话框,我想让用户滚动到列表的末尾以找到“确定”按钮以关闭对话框。

对话框包含一个 ListView,我使用页脚行将按钮添加到列表中。

View footerView = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).
inflate(R.layout.list_footer_button, null, false);
listView.addFooterView(footerView);

当我打开回话并打开此对话框时,它会读取错误的 ListView 计数,因为它包括页脚行。例如,如果我的列表有 3 个项目,对讲显示为“第 1 个,共 4 个”。

问题

如何让 talkBack 读取正确数量的项目而忽略页脚行?

如果我不能改变它,我还可以如何创建一个对话框,用户必须滚动到列表的末尾才能看到关闭对话框的按钮。

最佳答案

我已通过将按钮添加到最后一行的 View 而不是添加页脚来解决此问题。

我的每行布局包含一个 textView 和一个按钮,并且按钮设置为“不可见”。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<LinearLayout android:id="@+id/notes_details"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- other views here but removed for this post -->
<TextView
android:id="@+id/notes_text"
style="@style/notes_text_style"/>
</LinearLayout>

<Button
android:id="@+id/notes_button"
style="@style/notes_button"
android:layout_below="@id/notes_details"
android:layout_centerHorizontal="true"
android:visibility="invisible" />

</RelativeLayout>

在列表的适配器中,我根据该行是否是最后一行来显示/隐藏按钮

 boolean isLastRow = iPosition == getCount()-1;
okButton.setVisibility(isLastRow ? View.VISIBLE : View.GONE);

需要更改辅助功能

还有一些额外的工作可以使这一切都用于可访问性目的。如果没有更改以支持可访问性,则只有行是可导航的。因此,最后一行将选择注释文本和确定按钮作为一个可选项目,您将无法使用键盘/跟踪球导航到该按钮。

首先你必须设置列表,使一行中的项目是可聚焦的

listView.setItemsCanFocus(true);

其次,在适配器的代码中,我相应地在注释 textView 和按钮上设置了 focusable/nextFocusXXX

// when in accessibility mode, we want to set the navigation order for
// the list item's text and the OK button
boolean isLastRow = iPosition == getCount()-1;
if (isAccessibilityEnabled) {
notesTextView.setFocusable(true);
okButton.setFocusable(true);
rowView.setNextFocusForwardId(isLastRow ? R.id.notes_button: R.id.notes_text);
rowView.setNextFocusDownId(isLastRow ? R.id.notes_button: R.id.notes_text);
okButton.setNextFocusUpId(R.id.notes_text);
}

关于Android 如何在阅读列表项计数时停止包括页脚行的 TalkBack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43352034/

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