最近在做android项目,需要做一个自定义的标题栏(操作栏)。去网上找了很多demo,发现都有很多问题。例如使用自定义的style。下面来分享下个人最终的解决方案吧
设置标题栏背景
1> 准备背景图片: background_pix.png

注:用背景图片比用颜色好处,可以让背景看起来有凹凸感.
2> drawable文件夹下放xml文件
bitmap_repeat.xml
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/title_pic"
android:tileMode="repeat">
</bitmap>
3> 定义样式文件style.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 自定义标题样式 -->
<style name="StatusBarBackground">
<item name="android:background">@drawable/bitmap_repeat
</item>
</style>
<style name="XTheme" parent="android:Theme">
<!-- Window attributes -->
<item name="android:windowTitleBackgroundStyle">@style/StatusBarBackground </item>
</style>
<!-- 自定义标题样式 -->
</resources>
4> 在manifest.xml中引用主题android:theme="@style/XTheme"
<activity android:name=".activity.MainActivty"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation"
android:theme="@style/XTheme">
</activity>
自定义标题栏layout文件ct_title.xml
注: ct_title.xml文件中用如下方式设置标题栏背景会出下填充不满效果
android:background="@drawable/bitmap_repeat "
在activity中引用
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.ct_title);
}

|