2012-02-12 59 views
181
後退按鈕

我已經能夠從這些自定義操作欄的背景,標誌圖像和文本顏色使用建議:
Android: How to change the ActionBar "Home" Icon to be something other than the app icon?
ActionBar text color
ActionBar background image如何自定義的動作條

最後一塊我想自定義是後退按鈕圖像。它默認爲灰色,我希望它是白色的。無論是改變顏色,指定一個drawable或簡單地使其透明(並將V形圖像添加到我的自定義徽標圖像)都可以工作。我該如何解決這個問題?

+1

有在操作欄上沒有BACK按鈕。 BACK按鈕位於系統欄上,或不在屏幕上(對於具有BACK-OFF BACK按鈕的設備)。 – CommonsWare 2012-02-12 20:55:41

+0

@CommonsWare,我不知道'左雪佛龍公司在動作條被稱爲 - 但是這一個我指的是後退按鈕。我認爲它預計將取代Android設備上的物理後退按鈕。 – 2012-02-13 01:49:00

+12

不,不是。這是「向上」指標(儘管箭頭方向)。你可以通過'ActionBar'上的'setDisplayHomeAsUpEnabled()'來啓用它。這是專門**不**應該簡單地「返回」。這意味着點擊應用程序圖標會「向上」分層結構,而不是返回到之前的活動狀態(系統欄上的「後退」按鈕也會如此)。 – CommonsWare 2012-02-13 12:16:05

回答

366

「up」可供性指示符由主題的homeAsUpIndicator屬性中指定的可繪製提供。要使用自己的自定義版本覆蓋它,它會是這樣的:

<style name="Theme.MyFancyTheme" parent="android:Theme.Holo"> 
    <item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item> 
</style> 

如果你與你的應用程序,支持預3.0確保你把這個版本的自定義主題的values-v11或相似。

+0

工作。謝謝傑克! – 2012-02-13 23:11:32

+10

也適用於我。我在github上的AOSP中聲明瞭作爲我的ActionBarStyle的樣式集,但它不起作用 - 移出主要主題做了詭計! +1 – Dori 2012-03-28 16:59:37

+36

' @ drawable/my_fancy_up_indicator'不適合我,但' @ drawable/my_fancy_up_indicator'做過。猜猜它是Android版本的東西 – 2012-06-10 09:39:01

29

我檢查了這個問題。這是我遵循的步驟。源代碼託管在GitHub上: https://github.com/jiahaoliuliu/sherlockActionBarLab

覆蓋pre-v11設備的實際樣式。

將以下代碼複製並粘貼到默認值文件夾的文件styles.xml中。

<resources> 
    <style name="MyCustomTheme" parent="Theme.Sherlock.Light"> 
    <item name="homeAsUpIndicator">@drawable/ic_home_up</item> 
    </style> 
</resources> 

請注意,父母可以更改爲任何Sherlock主題。

覆蓋v11 +設備的實際樣式。

在文件夾值相同的文件夾中,創建一個名爲values-v11的新文件夾。 Android會自動爲具有API或更高版本的設備查找此文件夾的內容。

創建一個名爲styles.xml新的文件和後續的代碼粘貼到文件:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyCustomTheme" parent="Theme.Sherlock.Light"> 
    <item name="android:homeAsUpIndicator">@drawable/ic_home_up</item> 
    </style> 
</resources> 

注意THA樣式的名稱必須相同的默認值文件夾,而不是文件項目homeAsUpIndicator,它被稱爲android:homeAsUpIndicator。

項目問題是因爲對於API 11或更高版本的設備,Sherlock Action Bar使用Android自帶的默認Action Bar,其名稱爲android:homeAsUpIndicator。但是對於API 10或更低版本的設備,Sherlock Action Bar使用自己的ActionBar,家中的指標被稱爲簡單的「homeAsUpIndicator」。

使用新的主題,在清單

在AndroidManifest文件的應用程序/活動更換主題:

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/MyCustomTheme" > 
+2

如果您正在查找已有的全息圖標,則可以嘗試@ drawable/abc_ic_ab_back_holo_light或@ drawable/abc_ic_ab_back_holo_dark。 – 2014-07-04 06:15:28

80

所以,你可以改變它編程容易使用homeAsUpIndicator()函數在Android API級別18和更高版本中添加。

ActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);

如果使用支持庫

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);

+5

如果你正在使用抽屜,你必須調用'drawerToggle.setDrawerIndicatorEnabled(false);'在更改指針之前 – Floss 2015-04-28 16:13:17

+1

@Floss謝謝,setDrawerIndicatorEnabled(false/true);解決了我的問題,根據我的要求將主頁按鈕設置爲一致的「後退」和(打開抽屜/關閉抽屜)。 – 2015-05-22 05:02:35

+1

@Floss drawerToggle.setDrawerIndicatorEnabled(false);它適用於我:) – Context 2015-12-03 15:29:23

5

如果使用的是工具欄,你不需要這些解決方案。您只需如果您使用的是dark.actionBar後退按鈕會,如果你使用的是光動作條主題它將會是黑是白別的改變工具欄

app:theme="@style/ThemeOverlay.AppCompat.Light" 

app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 

的主題。

+0

您的代碼適用於我,但我們可以更改該指標的顏色嗎? – 2015-11-24 08:54:55

+2

colorControlNormal和android:textColorSecondary值對此負責,但我不太確定這些值還會發生什麼變化。您可以嘗試在工具欄主題上定義這些值。 – 2015-11-24 09:28:27

+0

我使用「app:theme =」@ style/ThemeOverlay.AppCompat.Light「」以背景白色顯示navigationIcon,但它顯示默認的灰色圖標,我需要將其更改爲藍色。 「colorControlNormal和android:textColorSecondary」不起作用。 – 2015-11-24 09:50:03

15

我做了下面的代碼onCreate()和我

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator); 
+0

不要忘記清理項目 – jlopez 2016-09-14 08:16:27

23

變回導航圖標不同的動作條和工具欄的工作。

對於動作條覆蓋homeAsUpIndicator屬性:

<style name="CustomThemeActionBar" parent="android:Theme.Holo"> 
    <item name="homeAsUpIndicator">@drawable/ic_nav_back</item> 
</style> 

工具欄覆蓋navigationIcon屬性:

<style name="CustomThemeToolbar" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="navigationIcon">@drawable/ic_nav_back</item> 
</style> 
0

我在項目menifest.xml文件中使用back.png圖像。在項目中工作得很好。

<activity 
     android:name=".YourActivity" 
     android:icon="@drawable/back" 
     android:label="@string/app_name" > 
    </activity> 
0

我有行動吧主頁按鈕圖標的方向相同的問題,因爲在搖籃資源目錄圖標

像阿拉伯語搖籃資源目錄圖標的小姐管理的你把圖標的X華電國際和在英語搖籃資源圖標相同的名字,放在像XX-華電國際密度不同的文件夾,這樣在APK會有不同的目錄中兩個相同的圖標名稱,以便您的設備會挑密度相關的圖標可以是RTL或LTR