【问题标题】:How to change action bar size如何更改操作栏大小
【发布时间】:2013-07-03 04:28:02
【问题描述】:

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

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

谢谢。

【问题讨论】:

标签: android android-actionbar


【解决方案1】:

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

现在可以通过在AndroidManifest.xml&lt;application&gt; 标记中使用android:theme="@style/AppTheme" 将这种样式设置为应用主题。

注意重复条目的使用

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

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

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

2015 年 4 月更新

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

【讨论】:

  • @user1156041 你能详细说明一下这个 LOC:mContentHeight = a.getLayoutDimension(R.styleable.ActionBar_height, 0);什么是 mcontentHeight ,等等 我是新手,很难使用这个
  • 上面我做了,但是action bar的高度还是固定的。
  • @S.D.它不适用于 Android 2.3 ... 任何建议让它在 Android 2.3 上运行???
  • @akkilis 在 2.3 上,您必须使用 Appcompat 库。查看更新的答案。
  • 在 5.0 设备上,我无法让这个建议发挥作用。我发现从高度 @dimen/bar_height 中删除命名空间修复了它。
【解决方案2】:

只需将actionBarSize item 放在 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>

【讨论】:

    【解决方案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>
    

    【讨论】:

      【解决方案4】:

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

      android:theme="@style/thin_ab"
      

      到主清单中的&lt;application&gt; 元素。 (我是菜鸟,我花了大约 2 个小时才发现这一点。)

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2017-01-25
          • 1970-01-01
          • 1970-01-01
          • 2023-03-17
          • 2015-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多