Wie funktioniert MenuItem.SHOW_AS_ACTION_IF_ROOM?

8

Erste Schritte mit ActionBar ...

Für MenuItem.SHOW_AS_ACTION_IF_ROOM steht in der Dokumentation:

  

Zeigen Sie dieses Element als eine Schaltfläche in einer Aktionsleiste, wenn das System entscheidet   da ist Platz dafür.

Meine Frage ist, wie entscheidet das System, ob es Platz gibt, und kann ich diese Entscheidung beeinflussen / optimieren?

In meinem Fall habe ich ein paar Menüpunkte, die sich als Aktionsschaltflächen eignen würden - wenn genug Platz ist. Auf kleineren Bildschirmen nehmen sie genügend Platz, um den Titel der Actionbar ellipsenförmig zu machen. Ich würde es vorziehen, dass sie in diesem Fall in den Überlauf der Aktion gehen, anstatt den Titel zu verdecken.

PS. Ich verwende ActionBarSherlock und habe nicht überprüft, ob die native ActionBar genau gleich funktioniert. Wenn die native ActionBar "if-room" -Aktionselemente nicht zu sehr verkleinert, dann werde ich nach einem Fehler in ActionBarSherlock suchen.

    
Pēteris Caune 15.01.2012, 17:29
quelle

3 Antworten

8

Laut dem offiziellen Android Design Guide ( Ссылка ):

  

Die Aktionsleistenkapazität wird durch die folgenden Regeln gesteuert:

     
  • Aktionsschaltflächen in der Hauptaktionsleiste dürfen nicht mehr als 50% der Balkenbreite einnehmen. Aktionsknöpfe in den unteren Aktionsleisten können den verwenden   gesamte Breite.
  •   
  • Die Bildschirmbreite in dichteunabhängigen Pixeln (dp) bestimmt die Anzahl der Elemente, die in die Hauptaktionsleiste passen:      
    • kleiner als 360 dp = 2 Symbole
    •   
    • 360-499 dp = 3 Symbole
    •   
    • 500-599 dp = 4 Symbole
    •   
    • 600 dpi und größer = 5 Symbole
    •   
  •   
    
M.Q. 27.01.2012 20:45
quelle
4

OK, das war nicht schwer herauszufinden, die Logik ist in ActionMenuPresenter.java

Es sieht so aus:

  • Aktionsschaltflächen dürfen nicht mehr als die Hälfte des horizontalen Speicherplatzes belegen
  • Die Anzahl der angezeigten Aktionsschaltflächen ist abhängig von der Bildschirmbreite ( R.integer.abs__max_action_buttons )
  • ebenfalls begrenzt
  • Das numerische Limit kann unterbrochen werden, wenn die Aktionen zur selben Gruppe gehören, das Breitenlimit kann nicht - wenn eine Gruppe das Breitenlimit überschreitet, geht die ganze Gruppe in den Überlauf.
Pēteris Caune 15.01.2012 17:49
quelle
1

Ich bin ActionBarSherlock-Benutzer, ich kann Ihnen vorschlagen, Whartons Quellen nach der Antwort zu durchsuchen.

Wie ich es verstehe, hat er sein on-Layout mit onMeasure-Methode, wo er prüft, ob die Titel-, Logo- und Menüelementansichten in der Aktionsleiste platziert werden können, indem sie ihre Zusammenfassungsbreite definieren.

Sie können seine Logik in der BaseMenuPresenter-Klasse überprüfen, wenn ich meinem Speicher vertrauen kann.

    
Orest 15.01.2012 17:42
quelle

Tags und Links