2013-07-24 18 views
9

Czy mogę ustawić przycisk strony głównej w pasku akcji po prawej stronie? (android.R.id.home)Ustaw przycisk główny ActionBar na prawą stronę

Chcę zmienić pozycję przycisku strony głównej, ponieważ język używa pisania od prawej do lewej.

Czy to możliwe? Jeśli tak, proszę powiedz mi, jak mogę to zrobić?

Jeśli nie, w jaki sposób ustawić właściwość ActionBarDrawerToggle po prawej stronie?

+0

przycisk domu .. Jego zwykle przycisk sprzętowy, który oczywiście nie może być przeniesiony, a jeśli jej przycisku oprogramowania, nie można go zmienić. Nie wspominając o tym, że jest pośrodku, więc odwrócenie go nadal będzie w środku. Najprawdopodobniej nie wyjaśniłeś, co właściwie robisz. – Doomsknight

+0

mam na myśli przycisk home (android.R.id.home) – user1571714

Odpowiedz

0

Android uzyskał ostatnio obsługę pasków od prawej do lewej ActionBara, ale jest dostępny tylko w interfejsie API 17. Jeśli Twój manifest ma ustawiony android:supportsRtl="true", zrobi to domyślnie.

+0

moja aplikacja i ustawiam android: supportsRtl = "true" – user1571714

+0

W tym case, użytkownicy interfejsu API 17 zobaczą to od prawej do lewej, a użytkownicy <17 zobaczą to domyślnie. – Geobits

+0

to się nie zmienia, user1571714

0

nie całkowicie pewien, czy to jest to, czego szukasz, ale ciebie mógł się przycisk home pojawiać się pod menu rozwijanego na pasku akcji (3 pionowe kropki ikon)

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

Poprzez ustawienie go jako „android: showAsAction =” nigdy”nie", to pojawi się pod menu rozwijanego jednak prawdopodobnie nie będziesz ab le, aby zobaczyć to w emulatorze Android Studio (przynajmniej ja nigdy nie widziałem go w emulatorze dla Androida Studio), nie jestem pewien co do Eclipse.

1

Możesz utworzyć taki pasek akcji, ale jest on trochę bardziej skomplikowany niż nadmuchiwanie menu. Menu utworzone w metodzie onCreateOptionsMenu() będzie zawsze wyrównane do prawej, umieszczone w podzielonym pasku akcji lub ukryte pod klawiszem menu.

Jeśli chcesz, aby pasek akcji zawierał tylko dwa elementy menu - jeden na lewej krawędzi, a drugi na prawej krawędzi - musisz utworzyć niestandardowy widok na pasku akcji.

Niestandardowy układ widok będzie coś takiego:

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

Zdefiniuj w temacie, który chcesz użyć niestandardowego widoku. Temat powinien zawierać:

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

Ustaw niestandardowy widok w działalności (lub fragmentu):

@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) { 
      // ... 
     } 
    }); 
} 
Powiązane problemy