36

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

<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 级别 11。

谢谢。

4

5 回答 5

76

使用height属性,actionBarSize如果是别的东西。

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

解释:

来自 ActionBar 的源代码:

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

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

2014 年 12 月更新:

现在提供AppCompat 库以扩展对最新 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".<application>AndroidManifest.xml

注意重复条目的使用

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

没有android命名空间的那些用于支持兼容性库和原生属性。其中一些属性在旧版本的 android 命名空间下不存在,属于支持库。

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

2015 年 4 月更新

AppCompat 库 v22也可用。通读文章以了解新内容。

于 2013-07-03T05:15:16.727 回答
18

只需将actionBarSizeitem 放在 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>
于 2015-09-05T18:18:09.167 回答
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>
于 2014-11-14T19:47:47.080 回答
2

Make sure to add S.D.'s code to styles.xml and then add

android:theme="@style/thin_ab"

to the <application> element in the main manifest. (I'm a noob and it took me about 2 hours to find that out.)

于 2014-04-19T14:47:07.353 回答
2

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

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

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

于 2015-05-10T15:09:33.830 回答