滚动到Android列表的顶部,即使顶部有不可聚焦的元素也是如此

时间:2015-01-18 17:33:34

标签: android android-layout

我有一个RecyclerView,它在网格部分显示内容,其中每个网格部分由非交互式TextView引导(如果你点击/点击它就没有任何反应)。

如果我在非触摸模式下导航屏幕(仅使用键盘/遥控器/轨迹球),那么显然我需要一个焦点状态:

如果我向下浏览RecyclerView,使“第1部分”在屏幕外,然后再次备份 - 滚动将停在第1部分下的顶部网格项目,然后下一个焦点项目将是汉堡菜单; 第1部分仍然会在屏幕外,因为它不可调焦 - 它不会滚动到顶部。

在触控模式下,这不是问题;用户可以向上滚动。在非触摸模式下,我可以使章节标题可以集中 - 但是在语义上让这些非交互元素具有焦点状态是没有意义的(除了TalkBack之外的辅助服务 - 如果启用了TalkBack,当然,它们可以集中精力)。

如果不设置可聚焦的节标题,有什么方法可以确保在使用轨迹球向上导航列表时,它会在关注下一个元素(汉堡包)之前滚动到列表顶部(包括节标题)菜单)?


以下是单个RecyclerView项目的代码 - 它包含整个部分:非交互式部分标题,以及下面的3个交互式元素。显示android:focusable="false"以突出显示问题(默认情况为false)。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical">

  <TextView
    android:id="@+id/category_text_heading"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="false" />

  <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="true" />

  <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="true" />

  <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="true" />

</LinearLayout>

这张照片说明了问题:

此处汉堡图标已聚焦,但RecyclerView尚未滚动到内容的顶部。如果我将“第1部分”调焦,那么使用键盘/轨迹球向上导航将允许“第1部分”获得焦点,并且所有可聚焦元素都会移动到视图中,因此它会滚动到顶部,然后再次按下,专注于汉堡包图标。

0 个答案:

没有答案