2014-01-06 65 views
0

我將自己的應用從自定義標題欄切換到ActionBar支持庫,因爲我喜歡ActionBar提供的功能,而且之前我僅僅因爲3.0+而避免了它。我有ActionBar正常工作,這是很好的,但我的應用程序也有一個較低的酒吧在屏幕的底部,我想保持與頂部的ActionBar相同的外觀。由於它看起來像ActionBar使用圖像背景(九個補丁PNG),而不是像我以前所做的那樣定義顏色,所以我需要從我的佈局xml訪問可拖動的操作欄底部的drawable,並將其用作底部欄的背景。Android主題:如何從AndroidManifest.xml中選擇的主題引用drawable?

我查看了支持v7庫,發現了drawable/abc_cab_background_bottom_holo_dark和手動輸入,可以很好地處理黑暗的主題。不過,我想放入一些能夠自動爲AndroidManifest中指定的主題提取正確的drawable的東西,無論是明亮還是黑暗的主題。

這裏是XML的問題位:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_vertical" 
    android:orientation="horizontal" 
    android:background="@drawable/abc_ab_bottom_solid_light_holo"> 

,並在AndroidManifest.xml:

<application android:icon="@drawable/icon" 
     android:allowBackup="true" 
     android:label="@string/app_name" 
     android:hardwareAccelerated="true" 
     android:theme="@style/Theme.AppCompat.Light" > 

一切我已經找到了一直在討論如何與自己的主題編輯動作條,但我想做相反的事情,根據股票appcompat主題編輯我自己的股票,股票的ActionBar可繪製。具體而言,做什麼,我把爲Android:背景=參考的當前主題的版本:

<item name="actionModeSplitBackground">@drawable/abc_cab_background_bottom_holo_dark</item> 

爲V7 /程序兼容性/ RES /價值/ themes_base.xml界定?

回答

0

嘿從我的示例應用程序的ActionBar。

我編程做這樣的:

XML部分:

<?xml version="1.0" encoding="utf-8"?> 

<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/bg_striped_img" 
    android:tileMode="repeat" 
    android:dither="true" /> 

在XML部分設置你的繪製圖片來源然後使用XML程序作爲BitampDrawable

OnCreate:

//striped layout 
     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
      BitmapDrawable bg = (BitmapDrawable)getResources().getDrawable(R.drawable.bg_striped); 
      bg.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT); 
      getSupportActionBar().setBackgroundDrawable(bg); 

      BitmapDrawable bgSplit = (BitmapDrawable)getResources().getDrawable(R.drawable.bg_striped_split); 
      bgSplit.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT); 
      getSupportActionBar().setSplitBackgroundDrawable(bgSplit); 
     } 

編輯: R.drawable.bg_stripedR.drawable.bg_striped_split

這兩者都是你的XML文件,上面明確和bg_striped是改變你的動作條背景與bg_striped_split是改變你的拆分菜單背景..

+0

哪裏是R. drawable.bg_striped_split定義了嗎? – CalcProgrammer1

+0

Just Edited .. !!並請告訴我,如果它的工作與否.. :) – arraystack