2012-02-12 65 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