如何更改操作栏大小

use*_*041 32 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>
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

S.D*_*.D. 73

使用height属性,actionBarSize如果是其他东西.

<item name="android:height">@dimen/bar_height</item>
Run Code Online (Sandbox Code Playgroud)

Explanantion:

从ActionBar的源代码:

mContentHeight = a.getLayoutDimension(R.styleable.ActionBar_height, 0);
Run Code Online (Sandbox Code Playgroud)

我们可以看到它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>
Run Code Online (Sandbox Code Playgroud)

现在可以使用android:theme="@style/AppTheme"in <application>标签将此样式设置为app主题AndroidManifest.xml.

请注意重复条目的使用

<item name="android:actionBarStyle">
<item name="actionBarStyle">
Run Code Online (Sandbox Code Playgroud)

没有android命名空间的那些用于支持兼容性库和本机属性.这些属性中的一些在旧版本的android命名空间下不存在并且属于支持库.

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

2015年4月更新

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


小智 13

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

<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarSize">15dp</item>
    <item name="actionBarSize">15dp</item>
    ...
</style>
Run Code Online (Sandbox Code Playgroud)

说明:

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

另外,从源代码res/values/styles.xml我们看到如何actionBarSize设置height:

<style name="Widget.ActionBar">
    ...
    <item name="android:height">?android:attr/actionBarSize</item>
Run Code Online (Sandbox Code Playgroud)