2013-07-24 13 views
9

Posso impostare il pulsante home in un ActionBar sul lato destro? (android.R.id.home)Imposta il pulsante ActionBar home sul lato destro

Desidero modificare la posizione del pulsante Home perché la lingua utilizza la scrittura da destra a sinistra.

È possibile? Se sì, per favore dimmi come posso farlo?

Se no, come si imposta ActionBarDrawerToggle sul lato destro?

+0

pulsante Home .. Il suo solito un pulsante hardware, che ovviamente non può essere spostato, e se il suo un pulsante software, non può essere modificato. Per non parlare, è comunque nel mezzo, quindi invertire sarebbe ancora nel mezzo. Molto probabilmente non hai spiegato cosa stai facendo, correttamente. – Doomsknight

+0

intendo pulsante home (android.R.id.home) – user1571714

risposta

0

Android ha recentemente ottenuto il supporto per ActionBar da destra a sinistra, ma è disponibile solo nell'API 17. Se il manifest è impostato su android:supportsRtl="true", lo farà per impostazione predefinita.

+0

la mia applicazione e ho impostato android: supportsRtl = "true" – user1571714

+0

In quello caso, gli utenti su API 17 la vedranno da destra a sinistra e gli utenti <17 la vedranno come predefinita. – Geobits

+0

non cambia, user1571714

0

Non del tutto sicuro se questo è quello che stai cercando, ma voi potrebbe ottenere il pulsante Home per apparire sotto un menu a discesa sulla barra di azione (3 punti verticali icona)

<?xml version="1.0" encoding="utf-8"?> 

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
      android:id="@+id/ic_home" 
      android:orderInCategory="1" 
      android:showAsAction="never" 
      android:title="Home"/> 

</menu> 

impostando come "android: showAsAction =" mai"" apparirà sotto il menu a tendina tuttavia probabilmente non sarai ab le per vedere questo nell'emulatore di Android Studio (beh almeno non l'ho mai visto sull'emulatore per Android Studio), non sono sicuro di Eclipse.

1

È possibile creare tale barra delle azioni, ma è un po 'più complicato del gonfiare un menu. Il menu creato nel metodo onCreateOptionsMenu() sarà sempre allineato a destra, collocato nella barra delle azioni divisa o nascosto sotto il tasto menu.

Se si desidera che la barra delle azioni contenga solo due voci di menu, una sul lato sinistro e l'altra sul lato destro, è necessario creare una visualizzazione personalizzata nella barra delle azioni. layout di visualizzazione

Il costume sarà qualcosa di simile:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
    <ImageButton android:src="@drawable/ic_menu_item1" 
       android:background="?attr/actionBarItemBackground" 
       android:layout_width="?attr/actionBarSize" 
       android:layout_height="match_parent" 
       android:scaleType="centerInside" 
       android:id="@+id/item1" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true"/> 

    <ImageButton android:src="@drawable/ic_menu_item2" 
       android:background="?attr/actionBarItemBackground" 
       android:layout_width="?attr/actionBarSize" 
       android:layout_height="match_parent" 
       android:scaleType="centerInside" 
       android:id="@+id/item2" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentTop="true"/> 
</RelativeLayout> 

Definire nel tema che si desidera utilizzare visualizzazione personalizzata. Il tema dovrebbe contenere:

<style name="MyTheme" parent="@style/Theme.Sherlock"> 
    <item name="actionBarStyle">@style/MyActionBarStyle</item> 
    <item name="android:actionBarStyle">@style/MyActionBarStyle</item> 
</style> 

<style name="MyActionBarStyle" parent="@style/Widget.Sherlock.ActionBar"> 
    <item name="displayOptions">showCustom</item> 
    <item name="android:displayOptions">showCustom</item> 
</style> 

Impostare la visualizzazione personalizzata in attività (o frammento):?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ActionBar ab = getSherlock().getActionBar(); 
    LayoutInflater li = LayoutInflater.from(this); 
    View customView = li.inflate(R.layout.my_custom_view, null); 
    ab.setCustomView(customView); 

    ImageButton ibItem1 = (ImageButton) customView.findViewById(R.id.item1); 
    ibItem1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // ... 
     } 
    }); 

    ImageButton ibItem2 = (ImageButton) customView.findViewById(R.id.item2); 
    ibItem2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // ... 
     } 
    }); 
} 
Problemi correlati