自定义支持操作栏 / Android

Customizing Support Action Bar / Android

我最近开始 Android 编程,一切都很好,但我遇到了一个我找不到答案的问题,到目前为止我真的很努力地挖掘了 4 天。

我的应用程序使用支持操作栏,具体来说是“android.support.v7.app.ActionBarActivity”。长话短说,我无法处理适用于此支持操作栏的大部分内容。

由于将我的 mini sdk 版本设置为 14,我的应用默认使用此支持操作栏。

我希望能够从头开始构建一个操作栏,并对其进行自定义,因为默认操作栏不响应我在 styles.xml 等方面的自定义

我不介意使用 Holo 主题库而不是 AppCompat。

那么这里的问题是,如何使用Action Bar而不是Support Action Bar? 我怎样才能扩展我的 java class 来使用它而不是支持的?

因为none的在线定制解决方案适用于支持操作栏。

描述有点含糊不清,对此深表歉意。

创建一个新项目,select最低API级别为15。当你这样做时,这个项目将不需要appcompat-v7库,因为它是minSdkversion < 15 的项目。在这个项目中,默认使用 类 android.app.ActionBarActivityandroid.app.ActionBar,即原生 AOSP 类 而不是那些来自支持库。

在 API 8 级及以上,您可以根据需要使用以下自定义背景颜色的 ActionBar

步骤 1. 在您的 res/values 文件夹中,定义一个 XML 文件 theme.xml 并向其中添加以下内容:

<resources  
    xmlns:tools="http://schemas.android.com/tools">

    <style name="DefaultActionBarTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:actionBarStyle" tools:targetApi="11">@style/MyActionBar</item> 
        <item name="actionBarStyle">@style/MyActionBar</item> 
        <item name="android:actionBarSize" tools:targetApi="11">@dimen/action_bar_wrap_content</item> 
        <item name="actionBarSize">@dimen/action_bar_wrap_content</item> 
    </style>

    <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
        <item name="android:background" tools:targetApi="11">@color/actionbarbgcolor</item> 
        <item name="background">@color/actionbarbgcolor</item>
        <item name="android:height" tools:targetApi="11">@dimen/action_bar_wrap_content</item>
        <item name="height">@dimen/action_bar_wrap_content</item>
    </style>

</resources>

在同一文件夹中制作另一个 XML 文件 colors.xml 并向其中添加以下内容:

<resources>
    <color
        name="actionbarbgcolor">#00FF00
    </color>
</resources>

并在现有文件 dimens.xml 中添加最后一行:

<resources>

    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>

    <!-- Optional, in case you wish to increase the default width of the Action Bar. -->
    <dimen name="action_bar_wrap_content">55dp</dimen>

</resources>

代替上面的 #00FF00,使用十六进制颜色代码作为您希望在 ActionBar 中使用的背景颜色。

注意: 假设您使用的是 appcompat-v7 库,以上内容将起作用。如果没有,那么您将不得不使用 Holo.Light 主题之一而不是 AppCompat.Light,并且还会有其他变化。

步骤 2. 在您的清单文件中,您必须添加:

android:theme="@style/DefaultActionBarTheme"  

每个 <activity 声明如果 ActivityActionBar.

试试这个。它会起作用。

Zygotelnit 的答案有效,但你必须从项目声明中省略 ["tools:targetApi="11"] 否则它会出于某种原因给你一个错误。

另一方面,我发现了一个更短、更简单但没有那么优化的 solution.While 搜索 actionBar class 并在此处玩弄的答案是:

  1. 在您的 activity.java 中,转到

    protected void onCreate(Bundle savedInstanceState)
    
  2. 在那个方法的任何合适的地方,写下下面的代码:

    ActionBar actionBar = getSupportActionBar();
    actionBar.setBackgroundDrawable(new  
    ColorDrawable(Color.parseColor("#D62D20")));
    

您可以将颜色代码替换为您选择的任何颜色代码。这显然是一个十六进制颜色代码。