【问题标题】:How to Customize the Android Action Bar?如何自定义 Android 操作栏?
【发布时间】:2016-01-16 22:27:45
【问题描述】:

我的 Android 应用程序的操作栏不显示“AndroidManifest.xml”标签中定义的图标,我也无法更改操作栏的颜色或操作标题文本的颜色等内容吧。

我目前使用的最低 API 为 16(Android Jellybean 4.1),目标 SDK 为最新(在撰写本文时)为 22。

我的样式.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/ActionBar</item>
    </style>

    <style name="ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">#006699</item>
    </style>
</resources>

我的 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="PACKAGE_NAME" >

<application
    android:allowBackup="true"
    android:icon="@drawable/logo_custom"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:logo="@drawable/logo_custom"
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

每当我在手机上测试应用程序(运行 4.4.4 KitKat API 19)时,我都会得到默认的黑色操作栏,没有应用程序图标。

有人知道为什么不能自定义吗?

感谢所有帮助,在此先感谢。

注意:我是 Android 开发新手。

【问题讨论】:

    标签: android xml android-actionbar android-4.4-kitkat


    【解决方案1】:

    在你的 Styles.xml 中试试这个。

        <style name="AppBaseTheme" parent="Theme.AppCompat.Light"></style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
            <item name="actionBarStyle">@style/MyActionBar</item>
        </style>
    
        <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
            <!-- Support library compatibility -->
            <item name="colorControlNormal">@color/light_gray</item>
            <item name="background">@color/white</item>
            <item name="android:textColor">@color/white</item>
        </style>
    

    编辑:

    您可以通过编程方式更改操作栏的背景。

    getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.actionbar_background_color)));
    

    你必须像这样在 color.xml 中定义你的颜色代码。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="actionbar_background_color">#f4f2f2</color>
    </resources>
    

    【讨论】:

    • 除了由于 light 基本主题而导致的活动现在具有轻的操作栏,这还没有解决问题,颜色仍然不会随着样式而改变.xml。编辑:是的,我确实将 AndroidManifest 的主题更改为“@style/AppBaseTheme”
    • 你想改变什么? Actionbar的背景还是actionbar的文字颜色?
    • 操作栏的背景 - 所以不是黑色或白色,而是灰色/红色以适合我的应用程序的其余部分。
    • 查看编辑后的答案以编程方式更改背景颜色。在您的活动中定义此代码。如果您要实现支持库活动,请使用 getSupportActionBar(),或者为正常活动使用 getActionBar()。
    • 在活动类中定义颜色本身有效,我不确定为什么 xml 方法不起作用,但现在一切都很好,我已经以编程方式完成了。谢谢!
    【解决方案2】:

    我建议使用Toolbar,因为它提供了您想要对操作栏进行的几乎所有自定义, 你会发现一个工作示例here

    【讨论】:

      【解决方案3】:
      <style name="Theme.AndroidDevelopers" parent="android:style/Theme.Holo.Light">
          <item name="android:selectableItemBackground">@drawable/ad_selectable_background</item>
          <item name="android:popupMenuStyle">@style/MyPopupMenu</item>
          <item name="android:dropDownListViewStyle">@style/MyDropDownListView</item>
          <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item>
          <item name="android:actionDropDownStyle">@style/MyDropDownNav</item>
          <item name="android:listChoiceIndicatorMultiple">@drawable/ad_btn_check_holo_light</item>
          <item name="android:listChoiceIndicatorSingle">@drawable/ad_btn_radio_holo_light</item>
      </style>
      

      更多:Android ActionBar

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多