如何更改操作栏大小

时间:2013-07-03 04:28:03

标签: android android-actionbar

我想更改操作栏的大小。我尝试过以下编码。

<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>

但是动作栏的大小没有变化。还有另外一种方法吗?我正在使用api level 11.。

感谢。

5 个答案:

答案 0 :(得分:73)

使用height属性,actionBarSize if if for other。

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

<强> Explanantion:

来自ActionBar的源代码:

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

我们可以看到R.styleable.ActionBar_height被用于身高。 Stylable属性名称生成为component_attribute(如果您曾使用自定义stylable视图,则会注意到这一点)。因此,Actionbar是组件的名称,height是要使用的属性的名称。由于这是一个系统属性,因此在android命名空间下定义。

2014年12月更新:

现在提供

AppCompat library以扩展对最新ActionBar(或工具栏)的支持以及对旧版Android的主题支持。以下是此类应用主题/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>

现在可以使用android:theme="@style/AppTheme"的{​​{1}}标记中的<application>将此样式设置为应用主题。

请注意使用重复条目

AndroidManifest.xml

没有<item name="android:actionBarStyle"> <item name="actionBarStyle"> 命名空间的那些用于支持兼容性库和本机属性。这些属性中的一些在旧版本的android命名空间下不存在,属于支持库。

在其他一些地方,您需要在菜单xml文件中使用android命名空间(app),例如xmlns:app="http://schemas.android.com/apk/res-auto"

2015年4月更新

AppCompat Library v22也可用。仔细阅读文章,了解新内容。

答案 1 :(得分:13)

简单地将actionBarSize项置于MyTheme样式下,如下所示:

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

<强>解释

R.styleable中,我们看到R.styleable.Theme_actionBarSize是在主题级别定义的可样式属性。

另外,从源代码res/values/styles.xml我们可以看到actionBarSize用于设置height的方式:

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

答案 2 :(得分:3)

将此添加到您从清单文件中引用的自定义主题样式XML:

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

例如,如果您的清单文件如下所示:

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

你的主题风格应该是 - 至少 - 像这样:

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

答案 3 :(得分:2)

确保将S.D.的代码添加到styles.xml,然后添加

android:theme="@style/thin_ab"

到主清单中的<application>元素。 (我是一个菜鸟,我花了大约2个小时才找到它。)

答案 4 :(得分:2)

S.D。的解决方案对我不起作用。 在我的案例中,我使用了 AppCompat v-21 库。 我只是添加

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

到我的布局文件,它可以工作。