具有透明背景的自定义操作栏



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

    <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);

任何帮助不胜感激

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

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

资源中创建自定义十六进制颜色

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

仅适用于安卓 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>

适用于安卓 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>

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

最新更新