如何自定义ActionBar上的后退button
我已经能够使用这些build议来自定义操作栏的背景,徽标图像和文本颜色:
Android:如何将ActionBar“Home”图标更改为应用程序图标以外的其他内容?
ActionBar文本颜色
ActionBar背景图片
我想要自定义的最后一部分是后退button图像。 它默认是灰色的,我希望它是白色的。 无论是改变颜色,指定一个可绘制的或简单地使其透明(和添加到我的自定义徽标图像的人字形)将工作。 我如何去做呢?
“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
或类似的版本中。
所以你可以通过使用在API API级别18和更高版本中添加的homeAsIndIndicator()函数轻松地以编程方式更改它。
ActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);
如果你使用支持库
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);
我已经检查了这个问题。 这是我遵循的步骤。 源代码托pipe在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 +设备的实际样式。
在文件夹值相同的文件夹中,创build一个名为values-v11的新文件夹。 Android会自动为API或更高版本的设备查找此文件夹的内容。
创build一个名为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>
请注意,样式的名称必须与默认值文件夹中的文件相同,而不是homeAsUpIndicator项,它被称为android:homeAsUpIndicator。
项目问题是因为对于API 11或更高版本的设备,Sherlock Action Bar使用Android自带的默认Action Bar,其名称为android:homeAsUpIndicator。 但是对于API为10或更低的设备,Sherlock Action Bar使用自己的ActionBar,家中的指标被称为简单的“homeAsUpIndicator”。
在清单中使用新的主题
在AndroidManifest文件中replace应用程序/活动的主题:
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/MyCustomTheme" >
更改后退导航图标对于ActionBar和工具栏是不同的。
对于ActionBar覆盖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>
我做了下面的代码onCreate()
和我一起工作
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);
如果您正在使用工具栏,则不需要这些解决scheme。 你只需要改变工具栏的主题
app:theme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
如果你正在使用一个dark.actionBar你的后退button将是白色的,否则如果你使用lightbar主题,它会变黑。
我在项目menifest.xml文件中使用了back.png图像。 在项目中工作得很好。
<activity android:name=".YourActivity" android:icon="@drawable/back" android:label="@string/app_name" > </activity>
由于缺lessGradle Resource目录图标中的图标pipe理,我有同样的Action-bar Homebutton图标方向问题
就像在阿拉伯语的Gradle资源目录中,你把图标放在x-hdpi和英文Gradle资源中相同的图标名称放在不同的密度文件夹,如xx-hdpi,所以在APK中会有不同目录下的两个相同的图标名称,所以你的设备会select密度相关的图标,可能是RTL或LTR