• Android4.0中Actionbar的背景处理问题


    Android中Actionbar的背景处理问题

     

       本文由宋兴柱发表自博客员


    今天有朋友做Android4.0的ActionBar时,它这么使用,

         <style name="AppTheme" parent="android:Theme.Holo.Light">
            <item name="android:actionBarStyle">@style/Actionbar</item> 
         </style>
     
         <style name="Actionbar">
             <item name="android:background">#ff0000</item>
         </style>
             
             
             

    结果在android设计界面上采用了#ff0000(红色)背景,但是在真机里运行或是在模拟器里运行时,用户就看不见ActionBar了。

    于是我就开如找原因,把style.xml中的样式全翻出来,把系统的android:Theme.Holo.Light样式中找出android:actionBarStyle样式,然后把这些样式复制到项目的Style.xml中。如下图:

    <resources xmlns:android="http://schemas.android.com/apk/res/android">
     
         <style name="AppTheme" parent="android:Theme.Holo.Light">
            <item name="android:actionBarStyle">@style/Actionbar</item> 
         </style>
         <style name="Actionbar">
             <item name="android:titleTextStyle">@android:style/TextAppearance.Holo.Widget.ActionBar.Title</item>
             <item name="android:subtitleTextStyle">@android:style/TextAppearance.Holo.Widget.ActionBar.Subtitle</item>
             <!-- <item name="android:background">@android:drawable/ab_solid_light_holo</item> -->
             <!-- <item name="android:backgroundStacked">@android:drawable/ab_stacked_solid_light_holo</item> -->
             <!-- <item name="android:backgroundSplit">@android:drawable/ab_bottom_solid_light_holo</item> -->
             <item name="android:divider">?android:attr/dividerVertical</item>
             <item name="android:progressBarStyle">@android:style/Widget.Holo.Light.ProgressBar.Horizontal</item>
             <item name="android:indeterminateProgressStyle">@android:style/Widget.Holo.Light.ProgressBar</item>
             <item name="android:progressBarPadding">32dip</item>
             <item name="android:itemPadding">8dip</item>  
      </style>     
     </resources>

    结果,系统提示找不到

    @android:drawable/ab_solid_light_holo
    @android:drawable/ab_stacked_solid_light_holo
    @android:drawable/ab_bottom_solid_light_holo
    然后,我们就把这三项注释掉了。再运行,还是不显示ActionBar。外加了下面这一项:
    <item name="android:background">#ff0000</item>

    结果还是不显示ActionBar。
    
    

    这时想可能是SDK的个漏洞吧。于是我们想在后台代码中实现 ,于是这么做:

    <resources>
     
         <style name="AppTheme" parent="android:Theme.Light" />
         <drawable name="BackBar">#ff00</drawable>
     
     </resources>
    

      加了这个后,然后在后台中这样使用:

        @Override
         public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
             
             
             getActionBar().setBackgroundDrawable(this.getBaseContext().getResources().getDrawable(R.drawable.BackBar));
             getActionBar().show();
         }
     
    

      这时再启动运行,果然,ActionBar和背景颜色都显示出来了。

    转载请注明原处。

  • 相关阅读:
    Sqoop相关
    Hive桶表
    Hive视图
    Hive的Explain命令
    Django路由分发
    Django对应的路由名称
    Django基于正则表达式的URL(2)
    Django基于正则表达式的URL(1)
    Django模板语言循环字典
    Django的CBV和FBV
  • 原文地址:https://www.cnblogs.com/songxingzhu/p/actionBar.html
Copyright © 2020-2023  润新知