Android开发:如何自定义ActionBar背景图片?
如何将图片设置为ActionBar背景
嘿,我来帮你搞定把图片设为ActionBar背景这件事!你已经改了styles.xml的部分代码,接下来补全这些步骤就能实现啦:
第一步:准备适配的背景图片
把你想要设置的ActionBar背景图片放到res/drawable目录下(如果要适配不同分辨率,可分别放到drawable-hdpi、drawable-xhdpi等对应目录),建议用9-Patch格式的图片,这样拉伸时不会变形。假设图片命名为action_bar_bg.png。第二步:补全styles.xml中的样式代码
你已经写了基础的主题和ActionBar样式,现在需要在MyActionBar里添加背景图片的配置:
如果你用的是原生Holo主题:<style name="AppTheme.CustomActionBar"> <item name="windowActionBar">true</item> <item name="windowNoTitle">false</item> <item name="android:actionBarStyle">@style/MyActionBar</item> </style> <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> <!-- 设置ActionBar背景为你的图片 --> <item name="android:background">@drawable/action_bar_bg</item> <!-- 可选:自定义标题文字颜色,适配背景 --> <item name="android:titleTextStyle">@style/ActionBarTitleText</item> </style> <style name="ActionBarTitleText" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textColor">#ffffff</item> </style>如果你的项目用的是AppCompat兼容库(现在大部分Android项目都会用),样式要调整为不带
android:前缀的属性:<style name="AppTheme.CustomActionBar" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="windowActionBar">true</item> <item name="windowNoTitle">false</item> <item name="actionBarStyle">@style/MyActionBar</item> </style> <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid"> <item name="background">@drawable/action_bar_bg</item> <!-- 可选:AppCompat下的标题文字样式 --> <item name="titleTextStyle">@style/AppCompatActionBarTitleText</item> </style> <style name="AppCompatActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textColor">#ffffff</item> </style>第三步:将主题应用到Activity
打开AndroidManifest.xml,找到你想要设置这个ActionBar的Activity标签,添加主题属性:<activity android:name=".MainActivity" android:theme="@style/AppTheme.CustomActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>额外小提示
- 如果需要ActionBar带透明效果或者叠加其他图层,可以创建一个
layer-list类型的drawable文件,把图片和透明层组合起来使用。 - 尽量用9-Patch图片,避免背景在不同设备上拉伸变形。
- 如果需要ActionBar带透明效果或者叠加其他图层,可以创建一个
内容的提问来源于stack exchange,提问作者anta40
相关产品推荐
相关产品推荐

