更改支持操作栏的高度

时间:2014-09-20 20:14:19

标签: android android-actionbar android-appcompat

我正在使用V7 support library,我想仅在某些活动中更改操作栏的高度

这是我的styles.xml

<resources>
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light"></style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme"></style>

    <!-- here -->
    <style name="Double_Action_Bar" parent="AppTheme">
        <item name="actionBarStyle">@style/Double_Action_Bar_Style</item>
    </style>

    <style name="Double_Action_Bar_Style" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="height">@dimen/abc_action_bar_double_height</item>
        <item name="android:height">@dimen/abc_action_bar_double_height</item>
    </style>
</resources>

其中:

@dimen/abc_action_bar_double_height == 2 * @dimen/abc_action_bar_default_height

在我的清单文件中,我将其包括在内:

<application
    android:name="com.myapp.App"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".Splash"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".Home"
        android:label=""
        android:theme="@style/Double_Action_Bar" /> <!-- here -->

但看起来.Home的动作栏似乎没有改变。

如何使用AppCompat编辑ActionBar高度?任何帮助将非常感激:)

谢谢。

2 个答案:

答案 0 :(得分:0)

在styles.xml中

<!-- Define a base Theme that inherits from the one you want (dark, light, light with Dark action bar... -->
<style name="AppBaseTheme" parent="Theme.Base.AppCompat">
</style>
<!-- Create sub themes necessaries and edit the actionBar style for them -->
<style name="AppTheme1" parent="AppBaseTheme"> 
  <item name="actionBarStyle">@style/ActionBarStyleBig</item>
</style>

<style name="AppTheme2" parent="AppBaseTheme">
  <item name="actionBarStyle">@style/ActionBarStyleSmall</item>
</style>
<!-- Edit on any of them the height for actionBar -->
<style name="ActionBarStyleBig" parent="@style/Widget.AppCompat.ActionBar.Solid">
  <item name="height">@dimen/bigActionBAr</item>
</style>

<style name="ActionBarStyleSmall" parent="@style/Widget.AppCompat.ActionBar.Solid">
  <item name="height">@dimen/smallActionBar</item>
</style>

请注意在Api&lt; 11,高度指定为name =“height”但在api> 10中你需要使用name =“android:height”才能使其正常工作。这意味着您还需要在位于文件夹值-v11和values-v14(以及您可能拥有的任何其他styles.xml)的styles.xml中创建这些主题。

在你的清单中,只需使用你需要的主题:

<activity
  android:name="com.example.myfirstapp.MainActivity"
  android:label="@string/app_name"
  android:theme="@style/AppTheme1" >
</activity>
<activity
  android:name="com.example.myfirstapp.SecondActivity"
  android:label="@string/title_activity_second"
  android:theme="@style/AppTheme2>

请记住并重新检查您是否未在任何其他styles.xml中重写此设置

希望它有所帮助。我尝试过并且工作了。

答案 1 :(得分:0)

您应该使用actionBarSize

<style name="AppTheme1" parent="AppBaseTheme"> 
  <item name="actionBarSize">@dimen/actionbar_height</item>
</style>