我正在将我的应用程序从自定义标题栏切换到ActionBar支持库,因为我喜欢ActionBar提供的功能,而我之前因为仅3.0+而避免使用它。我有一个很好的ActionBar工作,但我的应用程序在屏幕底部还有一个较低的栏,我想保持与顶部的ActionBar相同的外观。因为它看起来ActionBar使用图像背景(九个补丁PNG),而不是像我之前所做的那样定义颜色,我需要从我的布局xml访问动作栏底部可绘制的drawable,并将其用作我的底栏的背景。
我查看了支持v7库,找到了像@ drawable / abc_cab_background_bottom_holo_dark这样的drawable,并且输入的手动效果非常适合黑暗主题。但是,我想在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" >
我发现的所有内容都在讨论如何使用您自己的主题编辑ActionBar,但我想做相反的事情,使用基于股票appcompat主题的股票ActionBar drawable编辑我自己的栏。具体来说,我为android:background =引用当前主题的版本:
<item name="actionModeSplitBackground">@drawable/abc_cab_background_bottom_holo_dark</item>
如v7 / appcompat / res / values / themes_base.xml中所定义的那样?
答案 0 :(得分: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部分中,将drawable设置为图像源,然后在程序中使用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_striped
和R.drawable.bg_striped_split
这两个都是你上面提到的XML文件,bg_striped是改变你的actionBar背景而bg_striped_split是改变你的Split菜单背景..