44 Stimmen

Gibt es eine Möglichkeit, den Abstand zwischen den Aktionssymbolen in der Aktionsleiste zu verringern?

Ich wollte den Abstand zwischen den Aktionselement-Symbolen reduzieren, die der ActionBar hinzugefügt wurden. Gibt es eine Möglichkeit, das zu tun?

1 Stimmen

Die beste Antwort scheint für mich ziemlich gut zu sein - gibt es einen Grund, warum sie nicht akzeptiert wurde?

69voto

shai Punkte 835

Verwenden Sie einen benutzerdefinierten android:actionButtonStyle.

@style/ActionButtonStyle

und hier ist die Magie:

    <item name="android:minWidth">0dip</item>
    <item name="android:paddingLeft">0dip</item>
    <item name="android:paddingRight">0dip</item>                  

Normalerweise ist die minWidth auf 56 dip eingestellt.

0 Stimmen

Funktioniert nicht für mich in API-Level 11. Funktioniert in API-Level 14+.

6 Stimmen

Um mit älteren API-Versionen zu arbeiten, müssen wir auch @style/ActionButtonStyle festlegen.

0 Stimmen

Bitte beachten Sie, dass das Festlegen von android:minWidth auf 0 in einigen Situationen zu Abstürzen führen kann, wenn EditText für längere Zeit gedrückt wird. (auf einigen beliebten Geräten wie dem SGSII)

17voto

pedroca Punkte 1678

Für SDK-Versionen 17+ sollten Sie die Eigenschaften paddingStart und paddingEnd verwenden. Wenn Sie minSdkVersion < 17 haben, müssen Sie verschiedene Styles für jede Version verwenden, so wie hier:

res/values/styles.xml :

@style/ActionButtonStyle

    <item name="android:minWidth">0dip</item>
    <item name="android:paddingLeft">0dip</item>
    <item name="android:paddingRight">0dip</item>                  

res/values-v17/styles.xml :

@style/ActionButtonStyle

    <item name="android:minWidth">0dip</item>
    <item name="android:paddingStart">0dip</item>
    <item name="android:paddingEnd">0dip</item>

1 Stimmen

Dies sollte der richtige Ansatz sein, um das Padding für Geräte ab 17 zu überschreiben. Danke.

0 Stimmen

Das hat bei mir funktioniert! Falls das hilft, habe ich @style/ActionButtonStyle einmal innerhalb meines </code> Elements in der Datei <code>res/values/styles.xml</code> hinzugefügt. Dann habe ich die entsprechenden Versionen in beiden <code>styles.xml</code> Dateien hinzugefügt. Android wird die korrekte Definition von <code>@style/ActionButtonStyle</code> je nach Plattformversion auswählen. </x-turndown>

0 Stimmen

Um meinen vorherigen Kommentar zu korrigieren: Ich habe tatsächlich @style/ActionButtonStyle hinzugefügt (im Standard styles.xml und </code> in beiden <code>styles.xml</code> (Standard und v17). Siehe <a href="https://stackoverflow.com/a/30211328/1121497">diese Antwort</a>.</x-turndown>

15voto

Camino2007 Punkte 737

Dank an Shai für seinen Hinweis, der für mich ziemlich gut funktioniert (auf einem Android 4.0.x Gerät): (meine gesamte style.xml)

    <!--
        Themenanpassungen, die in neueren API-Ebenen verfügbar sind, können in
        res/values-vXX/styles.xml stehen, während Anpassungen, die mit 
        Abwärtskompatibilität zusammenhängen, hier stehen können.

    -->

    <!-- Alle Anpassungen, die NICHT spezifisch für eine bestimmte API-Ebene sind, können hier stehen. -->
    <item name="android:actionButtonStyle">@style/ActionButtonStyle</item>

    <item name="android:minWidth">0dip</item>
    <item name="android:paddingLeft">0dip</item>
    <item name="android:paddingRight">0dip</item>

12voto

Sagar Shah Punkte 4152

Um ältere Versionen mit AppCompat zu unterstützen, benötigen Sie nichts weiter als dies:

In Ihrem Anwendungs-App-Theme:

@style/ActionButtonStyle

und erstellen Sie einen Stil in style.xml

        <item name="android:minWidth">0dip</item>
        <item name="android:maxWidth">50dip</item>
        <item name="android:paddingLeft">0dip</item>
        <item name="android:paddingRight">0dip</item>

Das war's. Sie sind fertig.

0 Stimmen

Um es in v17 und höher zum Laufen zu bringen, habe ich auch die res/values-v17/styles.xml Version mit paddingStart und paddingEnd hinzugefügt, wie pedrocas Antwort vorschlägt.

0 Stimmen

Das Geheimnis ist das 30dp

5voto

Im appTheme hinzufügen

@style/CustomActionButtonStyle

und dann in style.xml diesen Style erstellen

        <item name="android:paddingStart">0dip</item>
        <item name="android:paddingEnd">0dip</item>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X