我试图自定义"导航"默认contentDescription
与ActionBar
的向上按钮相关联(我使用ActionBarSherlock)。
来自ActionBarView
的来源:
public void setHomeButtonEnabled(boolean enable) {
mHomeLayout.setEnabled(enable);
mHomeLayout.setFocusable(enable);
// Make sure the home button has an accurate content description for accessibility.
if (!enable) {
mHomeLayout.setContentDescription(null);
} else if ((mDisplayOptions & ActionBar.DISPLAY_HOME_AS_UP) != 0) {
mHomeLayout.setContentDescription(mContext.getResources().getText(
R.string.abs__action_bar_up_description));
} else {
mHomeLayout.setContentDescription(mContext.getResources().getText(
R.string.abs__action_bar_home_description));
}
}
所以关键是如何获得对mHomeLayout
的引用。 getWindow().getDecorView().findViewById(android.R.id.home)
无效,因为它返回了ImageView。
我该怎么办?
谢谢;)
答案 0 :(得分:7)
<强>布局强>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/colorPrimary"
android:elevation="4dp"
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:layout_scrollFlags="scroll|enterAlways">
</android.support.v7.widget.Toolbar>
<强>码强>
public Toolbar toolbar;
...
setContentView(layout);
toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle(layoutTitle);
setSupportActionBar(toolbar);
...
getSupportActionBar().setHomeActionContentDescription("Go Back To XYZ Screen");
答案 1 :(得分:4)
这是我如何在以前的项目中做你需要的:
((View) getWindow().getDecorView().findViewById(android.R.id.home).getParent().getParent()).setContentDescription("blablabla");
使用视图层次结构插件可以帮助我理解如何构建ActionBar布局。
答案 2 :(得分:1)
在xml中,使用“ navigationContentDescription”
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:layout_alignParentTop="true"
app:navigationContentDescription="@string/back"/>
答案 3 :(得分:0)
如果有人需要为UIAutomator设置ActionBar的主页按钮的内容描述,请使用
((View) getWindow().getDecorView().findViewById(android.R.id.home).getParent()).setContentDescription("MANUALLYSET-home-up");
并使用
访问UIAutomatorTestCase中的视图new UiObject(new UiSelector().description("MANUALLYSET-home-up").className("android.widget.FrameLayout"));
由于某种原因,额外的* .getParent()不起作用,而Android使用一些自动生成的内容描述值,这些内容可能在某些Android版本中有所不同(例如KITKAT上的“app_name,关闭导航抽屉”和在jELLYBEAN上“app_name,向上导航”。幸运的是,访问它的孩子也是有效的。
亲切的问候