我正致力于使现有的Android应用程序可访问,并且发现它非常令人沮丧,许多应该起作用的事情都没有。
我试图将内容组合在一起进行描述,就像在Google Codelabs example中所描述的那样,但它仍然使得内容的一部分可以用于手势导航:
我有一个Fragment
,其中LinearLayout
的垂直方向为根视图三RelativeLayouts
,每个都包含ImageView
和TextView
。
就像在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
有没有人有一个想法,为什么焦点跳转到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
?
我尝试了以下内容:
TextView
RelativeLayout
的ContentDescription设置为null(可能不太好)RelativeLayouts
设置为focusable:false TextViews
的ContentDescription,导致仅导航到TextViews
而未突出显示整个RelativeLayouts
这可能是一个与Codelabs示例相反的问题我在TextViews
内部有一个RelativeLayout
,而只有ImageView
才能被读出来吗?或者是否存在何时通过代码动态设置xml和RelativeLayout
等其他值的问题?
我绝对无能为力。
答案 0 :(得分:0)
android:focusable="true"
)。然后神奇地,内部可聚焦容器开始表现正常。
答案 1 :(得分:0)
当您为ViewGroup设置内容描述时,有时会发生这种情况。您只需要将子TextView设置为android:importantForAccessibility="no"