Android辅助功能 - 使用ImageView进行内容分组无法正常工作

时间:2016-08-26 12:03:42

标签: android accessibility android-accessibility

我正致力于使现有的Android应用程序可访问,并且发现它非常令人沮丧,许多应该起作用的事情都没有。

我试图将内容组合在一起进行描述,就像在Google Codelabs example中所描述的那样,但它仍然使得内容的一部分可以用于手势导航:

我有一个Fragment,其中LinearLayout的垂直方向为根视图三RelativeLayouts,每个都包含ImageViewTextView

layout

就像在codelabs中一样,我将RelativeLayout设置为可聚焦,对于ImageViews我将ContentDescription设置为null,因为它们纯粹是装饰性的。

这是其中一个XML的{​​{1}}布局,其根RelativeLayouts

LinearLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:orientation="vertical" tools:context="com.my.fancyapp.fragments.OtherFragment"> <RelativeLayout android:id="@+id/item_youtube" android:layout_width="match_parent" android:layout_height="@dimen/other_item_height" android:focusable="true" android:background="?attr/selectableItemBackground" android:padding="@dimen/other_item_padding"> <ImageView android:id="@+id/ivYouTube" android:layout_width="@dimen/other_icon_width" android:contentDescription="@null" android:layout_height="match_parent"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="@dimen/other_text_margin_left" android:text="YouTube" android:textAppearance="@style/ArtistTextAppearance" /> </RelativeLayout> ... </LinearLayout> 中,我为每个Fragment设置onClickListener,其链接到透视图(Youtube频道,Facebook页面或带有impressum的Webview)并加载{ {1}} RelativeLayout

ImageView

现在问题是,尝试点击某个项目,然后通过滑动到下一个项目进行导航会导致文本突出显示,而不是导航到下一个Picasso

enter image description here

有没有人有一个想法,为什么焦点跳转到itemYoutube.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(youTubeUrl)); startActivity(intent); } } }); Picasso.with(getActivity()) .load(R.drawable.icon_youtube) .fit() .centerInside() .into(iconYoutube); itemYoutube.setContentDescription(getString(R.string.youtube)); 而不是下一个RelativeLayout

我尝试了以下内容:

  • 为XML中的TextView
  • 设置ContentDescription
  • RelativeLayout的ContentDescription设置为null(可能不太好)
  • 在设置内容说明时更改了顺序
  • RelativeLayouts设置为focusable:false
  • 删除了TextViews的ContentDescription,导致仅导航到TextViews而未突出显示整个RelativeLayouts

这可能是一个与Codelabs示例相反的问题我在TextViews内部有一个RelativeLayout,而只有ImageView才能被读出来吗?或者是否存在何时通过代码动态设置xml和RelativeLayout等其他值的问题? 我绝对无能为力。

2 个答案:

答案 0 :(得分:0)

嘿我有类似的问题!我的解决方案是将我的布局的根容器设置为可聚焦(android:focusable="true")。然后神奇地,内部可聚焦容器开始表现正常。

答案 1 :(得分:0)

当您为ViewGroup设置内容描述时,有时会发生这种情况。您只需要将子TextView设置为android:importantForAccessibility="no"