2015-02-09 5 views
6

Ich arbeite mit der AppCompact-Bibliothek und habe einige Probleme mit Layout/Positionierung gehabt. Ich möchte das App-Symbol auf der rechten Seite der 'ActionBar' positionieren. Eine Methode besteht darin, eine Schaltfläche in der Symbolleiste zu definieren, aber gibt es eine Standardmethode zum Festlegen des App-Symbols und der Schaltfläche "Hoch" auf der rechten Seite der ActionBar?App-Symbol auf der rechten Seite in der Aktivitäts-Werkzeugleiste setzen

enter image description here

Wie Sie im obigen Bild sehen können, wird das Symbol auf der linken Seite positioniert ist, will ich es auf der rechten Seite sein. Jede Hilfe wäre willkommen.

Ps: Für Leute, die mein Problem konfrontiert kann es leicht mit diesem Code festgelegt werden kann diesen Code hinzufügen zu manifestieren:

<application android:supportsRtl="true"> 

und dann diesen Code auf onCreate schreiben:

getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 
+0

@ShabbirDhangot so scheint es der einfachste Weg ist, ein costomized Element in der Symbolleiste zu definieren? Gibt es eine Möglichkeit, das App-Symbol auszublenden oder das Layout der Symbolleiste nach rechts zu setzen? –

+0

Ich schlage vor, Sie mit der Erstellung der Kopfzeile mit Layout zu gehen und Ihre Ansichten anzupassen. Aktuelle Aktionsleiste ausblenden Wenn Sie nicht auf diese Weise gehen, können Sie das Aktionsleisten-Logo mit Stil ausblenden. hier beschrieben http://stackoverflow.com/questions/14606294/remove-icon-logo-from-action-bar-on-android –

+0

ausgezeichnet, es hat für mich funktioniert. –

Antwort

13

Es gibt keine Möglichkeit, Android-App-Symbol auf der rechten Seite der Actionbar setzen, aber Sie können immer noch tun, dass.

ein Menü erstellen, sagen main_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item android:id="@+id/menu_item" 
     android:icon="@drawable/your_app_icon" 
     android:title="@string/menu_item" 
     app:showAsAction="always"/> //set showAsAction always 
            //and this should be the only menu item with show as action always 

</menu> 

Jetzt nur ÜberschreibungonCreateOptionsMenu in Ihrer Aktivitätsklasse.

diese

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 

    getMenuInflater().inflate(R.menu.main_menu, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

in MainActivity.java

hinzufügen Es getan! Ihr App-Symbol wird jetzt auf der rechten Seite von ActionBar angezeigt.

Wenn Sie mehr als ein Element in Menü haben dann ÜberschreibungonPrepareOptionsMenu in Aktivitätsklasse und setzten setEnabled(false) für Menüpunkt App-Symbol hat, dies zu tun verhindert, dass Ihr Symbol anklickbar sein.

@Override 
public boolean onPrepareOptionsMenu(Menu menu){ 
    menu.findItem(R.id.menu_item).setEnabled(false); 

    return super.onPrepareOptionsMenu(menu); 
} 

jetzt Ihre MainActivity.java Datei würde so aussehen

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 

    getMenuInflater().inflate(R.menu.main_menu, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item){ 

    switch(item.getItemId()){ 
     case R.id.menu_item: //this item has your app icon 
      return true; 

     case R.id.menu_item2: //other menu items if you have any 
      //add any action here 
      return true; 

     case ... //do for all other menu items 

     default: return super.onOptionsItemSelected(item); 
    } 
} 

@Override 
public boolean onPrepareOptionsMenu(Menu menu){ 
    menu.findItem(R.id.menu_item).setEnabled(false); 

    return super.onPrepareOptionsMenu(menu); 
} 

Dies ist die nur Trick ist, dass Sie App-Icon gesetzt auf der rechten Seite verwenden können.

+0

danke für deine Hilfe..Ich habe eine andere Methode gefunden und ich habe meine Quest aktualisiert..Du denkst du, die Methode, die ich benutzt habe, ist falsch?Danke –

+0

@MajidHojati Das Attribut 'supportsRtl' wurde in API-Ebene 17 hinzugefügt, so dass es nicht für api <17 funktioniert. Verwenden Sie es nur, wenn Ihre' minSdkVersion' 17 ist. Quelle: http://developer.android.com/guide /topics/manifest/application-element.html#supportsrtl – Apurva

+0

danke für Ihre Hilfe. jetzt finde ich wie es funktioniert –

1

Es gibt keinen anderen Weg, als das Layout auf RTL zu setzen oder es selbst zu implementieren. Auch wenn Sie die Unterklasse Toolbar eingeben und versuchen, onLayout zu ändern, müssen Sie die Position aller Ansichten neu berechnen.

Verwandte Themen