2013-07-03 38 views
26

Ich möchte die Größe der Aktionsleiste ändern. Ich habe die folgende Codierung ausprobiert.So ändern Sie die Größe der Aktionsleiste

<style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/CustomActionBar</item> 
</style> 
<style name="CustomActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
    <!-- <item name="android:background">@drawable/action_bar_style</item> --> 
    <item name="android:actionBarSize">15dp</item> 
    <item name="android:background">@drawable/header_bar</item> 
</style> 

Aber die Größe der Aktionsleiste hat sich nicht geändert. Gibt es eine andere Art und Weise? Ich verwende API Level 11.

Danke.

+0

'android: actionBarSize' ist für mich arbeiten, aber API-Ebene 21 –

Antwort

70

Verwenden Sie height Attribut, actionBarSize wenn für etwas anderes.

<item name="android:height">@dimen/bar_height</item> 

explanantion:

Von Quellcode ActionBar:

mContentHeight = a.getLayoutDimension(R.styleable.ActionBar_height, 0); 

Wir können sehen, dass R.styleable.ActionBar_height zur Höhe verwendet wird. Stylable Eigenschaftsnamen werden als component_attribute generiert (Wenn Sie jemals eine benutzerdefinierte stylable Ansicht verwendet haben, würden Sie dies bemerken). Daher ist Actionbar der Name der Komponente und height ist der Name des zu verwendenden Attributs. Da dies ein Systemattribut ist, daher unter android Namensraum definiert.

Update-Dec-2014:

AppCompat library ist nun vorgesehen, für die neuesten ActionBar Unterstützung zu verlängern (oder Toolbar) und Theme-Unterstützung, um alte Android-Versionen. Unten ist ein Beispiel für eine solche Anwendung Thema /res/values/styles.xml:

<resources> 

    <!-- Application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light"> 

     <!-- Main theme colors --> 
     <!-- your app branding color for the app bar --> 
     <item name="colorPrimary">@color/primary</item> 

     <!-- darker variant for the status bar and contextual app bars --> 
     <item name="colorPrimaryDark">@color/primary_dark</item> 

     <!-- theme UI controls like checkboxes and text fields --> 
     <!-- native widgets will now be "tinted" with accent color --> 
     <item name="colorAccent">@color/accent</item> 

     <!--Action bar style--> 
     <item name="android:actionBarStyle">@style/AppTheme.ActionBar</item> 
     <item name="actionBarStyle">@style/AppTheme.ActionBar</item> 

    </style> 

    <style name="AppTheme.ActionBar" parent="Widget.AppCompat.Light.ActionBar"> 
     <item name="android:titleTextStyle">@style/AppTheme.ActionBar.TitleText</item> 
     <item name="titleTextStyle">@style/AppTheme.ActionBar.TitleText</item> 
     <item name="android:height">@dimen/bar_height</item> 
     <item name="height">@dimen/bar_height</item> 
    </style> 

    <style name="AppTheme.ActionBar.TitleText" parent="TextAppearance.AppCompat.Widget.ActionBar.Title"> 
     <item name="android:textSize">@dimen/bar_text_size</item> 
     <item name="android:textColor">@color/bar_text_color</item> 
    </style> 
</resources> 

Dieser Stil jetzt als App Thema eingestellt werden kann durch android:theme="@style/AppTheme" in <application> Tag des AndroidManifest.xml verwenden.

Beachten Sie die Verwendung von doppelten Einträgen

<item name="android:actionBarStyle"> 
<item name="actionBarStyle"> 

Diejenigen ohne android Namespace gibt es sowohl Kompatibilitätsbibliothek und nativen attributes.Some dieser Attribute nicht existieren auf älteren Versionen unter Android Namensraum für die Unterstützung und gehören zur Support-Bibliothek.

An einigen anderen Stellen müssen Sie app Namespace (xmlns:app="http://schemas.android.com/apk/res-auto") verwenden, zum Beispiel app:showAsAction="always" in Menü-XML-Dateien.

aktualisieren Apr 2015

AppCompat Library v22 ist ebenfalls verfügbar. Lesen Sie den Artikel, um zu wissen, was neu ist. styles.xml und fügen Sie dann

android:theme="@style/thin_ab" 

zum <application> Element im Haupt manifestieren

+1

@ user1156041 können Sie mir bitte dieses LOC erarbeiten: mContentHeight = a.getLayoutDimension (R.styleable.ActionBar_height, 0); Was ist mcontentHeight, ein etc Ich bin Anfänger Schwierigkeit, um diese – nida

+0

Ich tat das oben, aber immer noch die Höhe der Action-Bar ist immer noch behoben. – dsharew

+0

@ S.D. Es funktioniert nicht auf Android 2.3 ... irgendeinen Vorschlag, damit es auf Android 2.3 funktioniert? – akkilis

2

Stellen Sie sicher, S.D. den Code hinzuzufügen. (Ich bin ein Noob und es hat mich ungefähr 2 Stunden gekostet, das herauszufinden.

)
2

Fügen Sie diese auf den benutzerdefinierte Thema Stil XML, die Sie von Ihrer Manifest-Datei referenziert werden:

<item name="android:windowTitleSize">58dip</item> 

Zum Beispiel, wenn Ihre Manifest-Datei etwa wie folgt aussieht:

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     **android:theme="@style/AppTheme"** > 

Ihr Thema Stil sollte mindestens so sein:

<!-- Application theme. --> 
    <style name="AppTheme" parent="AppBaseTheme">    
     <item name="android:windowTitleSize">54dip</item> 
    </style> 
1

SD's Lösung funktioniert nicht für mich. Ich verwendete AppCompat v-21 Bibliothek in meinem Fall. Und ich nur hinzufügen,

android:layout_height="@dimen/actionBarSize" 
android:minHeight="@dimen/actionBarSize" 

meiner Layout-Datei und es funktioniert.

+0

Danke, nur diese Lösung funktioniert für mich. – kar

10

Einfach gesagt actionBarSize Artikel unter MyTheme Stil, wie folgt aus:

<style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:actionBarSize">15dp</item> 
    <item name="actionBarSize">15dp</item> 
    ... 
</style> 

Erläuterung:

In R.styleable wir sehen, dass R.styleable.Theme_actionBarSize ein styleable Attribut auf Themenebene definiert ist.

Auch aus dem Quellcode res/values/styles.xml wir sehen, wie actionBarSize verwendet wird height einzustellen:

<style name="Widget.ActionBar"> 
    ... 
    <item name="android:height">?android:attr/actionBarSize</item> 
0

Es gibt zwei Möglichkeiten, um die Aktionsleiste Größe zu ändern. 1. Verwendung der Manifest-Datei.

android:theme="@style/AppTheme1" 

2.programatically kann yo verwenden

public void onCreate(Bundle savedInstanceState) { 
setTheme(android.R.style.Theme); 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_second); 
} 
Verwandte Themen