自定义ActionBar与透明背景

时间:2015-03-14 17:35:54

标签: android background android-actionbar transparent

我无法获得动作栏的透明背景。这是我的代码。

    <style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:actionBarStyle">@style/action_bar_theme</item>
    <item name="android:windowContentOverlay">@android:color/transparent</item>
    </style>

<style name="action_bar_theme" parent="@style/Widget.AppCompat.ActionBar">
    <item name="android:background">@android:color/transparent</item>
    <item name="android:colorBackground">@android:color/transparent</item>
    <item name="android:titleTextStyle">@style/action_bar_title</item>
</style>

我无法获得透明背景。请让我知道我做错了什么,或者我是否错过了一切。

    ActionBar mActionBar = getSupportActionBar();
    mActionBar.setDisplayShowHomeEnabled(false);
    mActionBar.setDisplayShowTitleEnabled(false);

    mActionBar.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    mActionBar.setStackedBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    mActionBar.setSplitBackgroundDrawable(new ColorDrawable(Color.parseColor("#330000ff")));

    LayoutInflater mInflater = LayoutInflater.from(this);

    View mCustomView = mInflater.inflate(R.layout.custom_actionbar, null);
    TextView mTitleTextView = (TextView) mCustomView.findViewById(R.id.title_text);
    mTitleTextView.setText(getResources().getText(R.string.login_title));

    mActionBar.setCustomView(mCustomView,
                             new ActionBar.LayoutParams(
                                     ActionBar.LayoutParams.MATCH_PARENT,
                                     ActionBar.LayoutParams.WRAP_CONTENT,
                                     Gravity.CENTER
                             )
    );

    mActionBar.setDisplayShowCustomEnabled(true);

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

因为你使用支持库中定义的 Widget.AppCompat.ActionBar ,所以android:xxx attr是不可用的。对于您的问题,只需删除<item name="android:actionBarStyle">@style/action_bar_theme</item><item name="android:background">@android:color/transparent</item>的前缀 android:

顺便说一句,检查xml文件中的其他android:xxx attr也是出于同样的原因。

答案 1 :(得分:0)

在资源中创建自定义hexcolor

<color name="custom_color">#8C000000</color> 

然后像这样推荐

<item name="android:background">@color/custom_color></item>

示例十六进制颜色代码:#8C000000。

以上样本颜色将显示黑色,透明度为55%

我认为这会对你有帮助。

100% — FF
95% — F2
90% — E6
85% — D9
80% — CC
75% — BF
70% — B3
65% — A6
60% — 99
55% — 8C
50% — 80
45% — 73
40% — 66
35% — 59
30% — 4D
25% — 40
20% — 33
15% — 26
10% — 1A
5% — 0D
0% — 00 

告诉我它是否有效。

解决方案2:

仅适用于Android 3.0及更高版本

如果您的minSdkVersion设置为11或更高,则您的自定义主题应使用Theme.Holo主题(或其后代之一)作为您的父主题。例如:

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@android:style/Theme.Holo">
        <item name="android:windowActionBarOverlay">true</item>
    </style>
</resources>

适用于Android 2.1及更高版本

如果您的应用使用支持库在运行低于Android 3.0的版本的设备上兼容,则您的自定义主题应使用Theme.AppCompat主题(或其后代之一)作为您的父主题。例如:

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@android:style/Theme.AppCompat">
        <item name="android:windowActionBarOverlay">true</item>

        <!-- Support library compatibility -->
        <item name="windowActionBarOverlay">true</item>
    </style>
</resources>

价:https://developer.android.com/training/basics/actionbar/overlaying.html