5

Próbuję dostosować domyślną wartość "Nawiguj w górę" contentDescription, która jest powiązana z przyciskiem w górę z ActionBar (używam ActionBarSherlock).Ustaw zawartość Opis dla przycisku akcji w górę paska

Od źródła ActionBarView „s:

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

więc kluczem będzie jak się odniesienie do mHomeLayout. getWindow().getDecorView().findViewById(android.R.id.home) nie działa, ponieważ zwraca ImageView.

Jak mogę to zrobić?

Dzięki;)

Odpowiedz

4

Oto jak to zrobić, co trzeba w poprzednim projekcie:

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

Używanie wtyczki viewHierarchy pomaga mi zrozumieć, w jaki sposób układ ActionBar to zbudować.

0

W przypadku ktoś musi ustaw ActionBar Domu przyciskami za content-opis UIAutomator użyć

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

i dostęp do widoku w twojej UIAutomatorTestCase użyciu

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

Z jakiegoś powodu dodatkowego * Funkcja .getParent() nie działa, zamiast tego Android używa automatycznie generowanej wartości opisu treści dla tego rodzica, która może różnić się w niektórych wersjach Androida (np. "app_name, Close navigation drawer" na KITKAT i "app_name, Nawiguj w górę" na JEL LYBEAN). Uzyskanie dostępu do dziecka również działa na szczęście.

poważaniem

4

układ

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

kod

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