5

Ich versuche, die "Navigieren Sie nach oben" Standard contentDescription, die mit der Taste nach oben der ActionBar zugeordnet ist (ich benutze ActionBarSherlock).Set contentDescription für ActionBar up-Taste

Von ActionBarView ‚s Quelle:

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)); 
    } 
} 

so dass der Schlüssel wäre, wie einen Verweis auf mHomeLayout zu erhalten. getWindow().getDecorView().findViewById(android.R.id.home) funktioniert nicht, da ein ImageView zurückgegeben wird.

Wie könnte ich tun?

Dank;)

Antwort

4

Hier ist, wie ich tun kann, was man in einem früheren Projekt benötigen:

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

Mit viewHierarchy Plugin hilft mir zu verstehen, wie ActionBar Layout bauen ist.

0

Im Fall muss jemand die ActionBar Heim-Taste Inhalt-Beschreibung für UIAutomator setzen, verwenden Sie

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

und Zugriff auf die Ansicht in Ihrem UIAutomatorTestCase

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

Aus irgendeinem Grund mit der zusätzlichen * .getParent() hat nicht funktioniert, stattdessen verwendet Android einen automatisch generierten Inhaltsbeschreibungswert für diesen Elternteil, der sich in einigen Android-Versionen unterscheiden kann (zB "app_name, Close navigation drawer" auf KITKAT und "app_name, Navigate up" auf JEL) LYBEAN). Der Zugriff auf sein Kind funktioniert auch glücklicherweise.

Mit freundlichen Grüßen

4

Layout

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

Code

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