5

Sto tentando di personalizzare l'impostazione predefinita "Navigazione verso l'alto" contentDescription associata al pulsante su dello ActionBar (utilizzo ActionBarSherlock).Imposta contenutoDescrizione per azioneBar pulsante su

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

così la chiave sarebbe come ottenere un riferimento a mHomeLayout. getWindow().getDecorView().findViewById(android.R.id.home) non funziona, poiché restituisce un ImageView.

Come posso fare?

Grazie;)

risposta

4

Ecco come posso fare ciò che è necessario in un progetto precedente:

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

Utilizzando viewHierarchy plug mi aiuta a capire come il layout ActionBar è costruire.

0

Nel caso in cui qualcuno ha bisogno di impostare i contenuti-descrizione della casa-tasto del ActionBar per UIAutomator, utilizzare

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

e accedere alla vista nel vostro UIAutomatorTestCase utilizzando

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

Per qualche motivo il supplementare * .getParent() non ha funzionato, invece Android utilizza un valore di descrizione del contenuto generato automaticamente per quel genitore che potrebbe differire in alcune versioni di Android (ad es. "nome app, Chiudi cassetto di navigazione" su KITKAT e "nome app, Vai su" su JEL LYBEAN). Anche l'accesso al suo bambino funziona, per fortuna.

Genere riguarda

4

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

codice

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