【问题标题】:Transparent Actionbar: custom tabcolor透明操作栏:自定义标签颜色
【发布时间】:2012-11-23 10:54:59
【问题描述】:

我想用#3b000000 创建一个带有透明标签的ActionBar。类似这样的东西,但在 ActionBar 下方有标签:

这是我在 styles.xml 中使用的代码:

<style name="Theme.MyTheme" parent="@style/Theme.Sherlock.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/ActionBar</item>
    <item name="windowActionBarOverlay">true</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="actionBarStyle">@style/ActionBar</item>
</style>

<style name="ActionBar" parent="@style/Widget.Sherlock.Light.ActionBar">
    <item name="android:background">@color/actionbar</item>
    <item name="background">@color/actionbar</item>
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>
    <item name="actionBarTabStyle">@style/ActionBarTabStyle</item>
</style>

<style name="ActionBarTabStyle" parent="@style/Widget.Sherlock.ActionBar.TabView">
    <item name="background">@color/actionbar_tabs</item>
    <item name="android:background">@color/actionbar_tabs</item>
</style>

发生的情况是,ActionBar 本身确实显示了透明的背景色,但选项卡是完全透明的(没有颜色可见)。

我该如何解决这个问题?

【问题讨论】:

    标签: android actionbarsherlock


    【解决方案1】:

    在您的ActionBar 上致电setStackedBackgroundDrawable()

    getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
    ActionBar actionBar = getActionBar();
    actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#330000ff")));
    actionBar.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#550000ff")));
    

    这会产生(例如,带有一些随机图标和选项卡,以及两种不同的蓝色背景色以突出效果):

    (刷新图标是默认的,带有一点透明度。其他图标是自定义的测试图标,颜色为#FFFFFFFF,即不透明)。

    【讨论】:

    • 我不想要菜单项,我想要透明标签。
    • 啊,我不知道这两个词的含义有什么不同。我会去做。非常感谢您的回答!
    • 对我不起作用。我没有使用 getActionBar() 而是 getSupportActionBar()。我的栏是全蓝色的,没有透明度。另一件事是 getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);仅适用于 API 11 或更高版本。
    • 谢谢老兄,它的工作原理,如果我在 xml 布局中设置背景,只需要设置背景抛出代码,它将不起作用..
    • 你应该在 super.onCreate 之前调用它
    【解决方案2】:

    我在一个项目上做过这个,风格是这样的:

    <style name="AppTheme" parent="android:Theme.Holo">
        <item name="android:windowActionBarOverlay">true</item>
        <item name="android:actionBarStyle">@style/action_bar_theme</item>
        <item name="android:actionMenuTextColor">#fff</item>
    </style>
    
    <style name="action_bar_theme" parent="@android:style/Widget.Holo.ActionBar">
        <item name="android:background">#b3000000</item>
        <item name="android:titleTextStyle">@style/action_bar_text</item>
    </style>
    

    【讨论】:

    • 你在哪里声明标签的颜色和透明度?
    • 对不起,在我的项目中它没有标签
    【解决方案3】:

    正如this article 中所述,使用以下自定义主题可以完美运行。

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

    为了应用一些颜色,Gunnar 的回答显示了如何。

    ActionBar actionBar = getActionBar();
    actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#330000ff")));
    actionBar.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#550000ff")));
    

    【讨论】:

    • 如何使用getSupportActionBar()
    【解决方案4】:

    这是我的完全透明操作栏的代码

    <!-- Base application theme. -->
    <style name="TransparentTheme" parent="android:Theme.Holo.Light">
        <!-- Customize your theme here. -->
        <item name="android:windowBackground">@null</item>
        <item name="android:actionBarStyle">@style/ActionBarStyle.Transparent</item>
        <item name="android:windowActionBarOverlay">true</item>
    </style>
    
    <style name="ActionBarStyle.Transparent" parent="android:Widget.ActionBar">
        <item name="android:background">@null</item>
        <item name="android:displayOptions">showHome|showTitle</item>
        <item name="android:titleTextStyle">@style/ActionBarStyle.Transparent.TitleTextStyle</item>
    </style>
    
    <style name="ActionBarStyle.Transparent.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
        <item name="android:textColor">@android:color/white</item>
    </style>
    

    【讨论】:

      【解决方案5】:
                   getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);//or add in style.xml
                   ActionBar actionBar = getActionBar();
      
                   ColorDrawable newColor = new ColorDrawable(getResources().getColor(R.color.action_bar_color));//your color from res
                   newColor.setAlpha(128);//from 0(0%) to 256(100%)
                   getActionBar().setBackgroundDrawable(newColor);
      

      style.xml

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

      【讨论】:

        【解决方案6】:

        要将任何主题操作栏设置为透明的背景图像或颜色,应显示最佳和最简单的实现方式。

                actionBar.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(activity, android.R.color.transparent)));
        
        
            ImageView image = new ImageView(this);
            image.setTag(R.string.decore_view);
            image.setAdjustViewBounds(true);
            image.setScaleType(ImageView.ScaleType.CENTER_CROP);
            image.setLayoutParams(new ViewGroup.LayoutParams(-1, -1));
            image.setImageResource(R.drawable.home_bg);
            ((ViewGroup)((ViewGroup)getWindow().getDecorView())).addView(image, 0);
        

        【讨论】:

          【解决方案7】:
          ActionBar actionBar = getSupportActionBar();
          actionBar.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
          

          对我来说效果很好

          【讨论】:

            【解决方案8】:

            这对我的 ActionBar 透明的情况很好。

            getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#330000ff")));
            getSupportActionBar().setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#550000ff")));
            

            【讨论】:

              【解决方案9】:

              <!-- Base application theme. -->
              <style name="AppTheme" parent="android:Theme.Holo.Light">
                  <item name="android:actionBarStyle">@style/MyActionBar</item>
                  <item name="android:actionBarTabBarStyle">@style/MyActionBarTabBar</item>
                  <item name="android:windowActionBarOverlay">true</item>
              </style>
              
              <style name="MyActionBar"
                  parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
                  <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
                  <item name="android:background">@color/actionbar</item>
                  <item name="android:backgroundStacked">@color/tabbar</item>
              
              
              </style>
              

              颜色/操作栏和颜色/标签栏颜色值是透明的

              【讨论】:

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