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和背景顏色都顯示出來了。

 

轉載請注明原處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM