Apo*_*rva 8 android navigation-drawer android-collapsingtoolbarlayout android-appbarlayout android-accessibility
我在我的 2 个活动中遇到了这个问题。当我使用键盘 Tab 键或箭头键导航时 - 我无法到达应用栏中的任何元素。
1) 活动 1 -> 我的 appbar 有一个汉堡菜单图标来访问 NavigationView。我无法单击此图标。如果我触摸菜单图标 - 我可以使用键盘在菜单项上下导航。但是我如何进入菜单?
2) 活动 2 - 我有一个 CoordinatorLayout,里面有一个 CollapsingToolbarLayout 和一个 NestedScrollView。我能够导航到 NestedScrollView 的所有元素。但是我无法到达 CollapsingToolbarLayout 内工具栏上的任何按钮。它有一个收藏夹按钮和一个选项菜单 - 溢出图标和我总是在应用栏上显示的 1。我如何到达这些图标?
这是活动2的布局
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/detail_app_bar_layout"
android:layout_width="match_parent"
android:layout_height="@dimen/place_detail_appbar_height"
android:elevation="@dimen/place_detail_appbarlayout_elevation">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/detail_collapsing_toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:transitionGroup="false"
app:collapsedTitleGravity="start"
app:collapsedTitleTextAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="72dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/detail_app_bar_photo"
android:layout_height="match_parent"
android:layout_gravity="center"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"
android:background="@color/colorPrimary"
android:contentDescription="@string/place_image"
android:transitionName="@string/shared_photo"
style="@style/ToolbarImage"/>
<android.support.v7.widget.Toolbar
android:id="@+id/detail_toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/place_detail_toolbar_height"
android:background="@color/colorAccent"
app:layout_collapseMode="pin"
android:layout_gravity="bottom"
android:theme="@style/AppTheme.ToolbarColored">
<LinearLayout
android:id="@+id/meta_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:background="@android:color/transparent"
android:orientation="horizontal">
<TextView
android:id="@+id/toolbar_place_name"
style="@style/ToolbarName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:layout_gravity="center_vertical|start"
tools:text="OFJCC Gym and Recreation Center" />
<ImageView
android:id="@+id/toolbar_fav_icon"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:srcCompat="@drawable/ic_favourite_border"
android:tag="favorite_border"
android:layout_gravity="center"
android:focusable="true"
android:contentDescription="@string/favorite_desc"/>
</LinearLayout>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nextFocusUp="@+id/toolbar_fav_icon"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<include layout="@layout/place_details_content"/>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
我无法访问 toolbar_fav_icon ImageView
这两种情况之间唯一的共同点是在这两种情况下 - 我在访问 Appbar 上的元素时遇到问题。我是一个新手,我可能遗漏了一些非常明显的东西。请多多包涵,帮帮我!
谢谢!
阿普尔瓦
whe*_*max 10
当我在我们的应用程序中研究辅助功能时,我发现我无法通过蓝牙键盘将焦点移动到操作栏/工具栏视图。
我的测试设备是三星,所以我认为这是带有导航集群的东西,如这里的一些答案中所述......
但
就我而言,解决方案是 - 只需将此行添加到您的appBar和/或工具栏
android:touchscreenBlocksFocus="false"
Run Code Online (Sandbox Code Playgroud)
您是否尝试按下组合键 Cmd+Tab(在 Mac 上)或 Ctrl+Tab(在 Windows 上)?
Android 引入了键盘导航集群的新概念,并将 Toolbar 标记为 API 26+ 的导航集群。因此,仅通过 Tab 键无法访问工具栏元素,您需要“元选项卡”(Ctrl/Cmd + Tab)才能访问 API 26 及更高版本设备的工具栏。
在实现可访问性时,几乎总会有一些以元素为焦点的来回游戏,直到您掌握它为止。
现在,对于您的问题,如果仍然相关并且对于未来的寻求者来说不相关的话-
在使用可访问性时,请确保您想要获得焦点的每个元素都具有 importantforaccessibility 属性
android:importantForAccessibility="yes"
Run Code Online (Sandbox Code Playgroud)
另外,在您的情况下,如果我理解正确,您不需要 TalkBack 的辅助功能焦点,而是使用键盘导航。因此,基本上只需确保您希望能够获得焦点的每个元素都设置为 focusable true 即可。
android:focusable="true"
Run Code Online (Sandbox Code Playgroud)
这些是使用焦点的基础知识。
加分项——
如果您想以编程方式使某些内容在加载或有人被点击时获得焦点,您可以使用以下代码 -
myCustomView.post(new Runnable() {
@Override
public void run() {
myCustomView.requestFocus();
myCustomView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
}
});
Run Code Online (Sandbox Code Playgroud)
这不一定是在后期功能中,但如果不是在某些情况下,它就会落在线条之间并且不会获得焦点。
| 归档时间: |
|
| 查看次数: |
5091 次 |
| 最近记录: |