getsupportactionbar example empty developer custom bar activity android android-actionbar actionbarsherlock accessibility

example - show action bar android



Establezca contentDescription para el botón de arriba de ActionBar (3)

Aquí cómo puedo hacer lo que necesita en un proyecto anterior:

((View) getWindow().getDecorView().findViewById(android.R.id.home).getParent().getParent()).setContentDescription("blablabla");

Usar el plugin viewHierarchy me ayuda a entender cómo se construye el diseño de ActionBar.

Estoy tratando de personalizar la contentDescription predeterminada "Navegar hacia arriba" que está asociada con el botón de arriba de la ActionBar de ActionBar (estoy usando ActionBarSherlock).

De la fuente de 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)); } }

así que la clave sería cómo obtener una referencia a mHomeLayout . getWindow().getDecorView().findViewById(android.R.id.home) no funciona, ya que devuelve un ImageView.

¿Cómo podría hacerlo?

Gracias ;)


En caso de que alguien necesite establecer la descripción del contenido del botón de inicio de la barra de acciones para UIAutomator , use

((View) getWindow().getDecorView().findViewById(android.R.id.home).getParent()).setContentDescription("MANUALLYSET-home-up");

y acceda a la vista en su UIAutomatorTestCase usando

new UiObject(new UiSelector().description("MANUALLYSET-home-up").className("android.widget.FrameLayout"));

Por algún motivo, el * .getParent () adicional no funcionó, en su lugar, Android utiliza algún valor de descripción de contenido generado automáticamente para ese padre que puede diferir en algunas versiones de Android (por ejemplo, "nombre_aplicación, Cerrar el panel de navegación" en KITKAT y "nombre_aplicación, Navegue hacia arriba "en JELLYBEAN). El acceso a su hijo también funciona, afortunadamente.

Saludos cordiales


diseño

<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>

código

public Toolbar toolbar; ... setContentView(layout); toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle(layoutTitle); setSupportActionBar(toolbar); ... getSupportActionBar().setHomeActionContentDescription("Go Back To XYZ Screen");