如何使用Android默认的窗口标题样式来制作类似的 TextView
?
我猜了很多次,做了一个拥有默认标题栏所有元素的TextView,除了文本阴影(和一些填充/边距等)。以下是我尝试过的:
MainUI.xml
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar);
}
title_bar.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myTitle"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:textAppearance="@android:style/TextAppearance.WindowTitle"
android:background="@android:drawable/title_bar"
android:text="This is my new title" />
编辑:
我在makemachine和anddev上发现了一些有趣的相关文章。
虽然我不喜欢这样做,但我从实现的style.xml中复制了一些属性。
有没有办法避免以这种静态的方式复制属性?
下面的效果几乎完美,实际上唯一的区别是原始版本“剪切”了标题阴影的前2-3个像素,而我的TextView
没有。
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myTitle"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:gravity="center_vertical"
android:shadowColor="#BB000000"
android:shadowRadius="2.75"
android:singleLine="true"
android:textAppearance="@android:style/TextAppearance.WindowTitle"
android:background="@android:drawable/title_bar"
android:text="This is my new title" />
同样重要的是,需要用透明的颜色覆盖默认的android:windowTitleBackgroundStyle,因为默认值包含了一些不必要的填充等内容,这会导致你的自定义标题栏出现包裹问题。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomTheme" parent="android:Theme">
<item name="android:windowTitleBackgroundStyle">@android:color/transparent</item>
</style>
</resources>
请记得在您的AndroidManifest.xml
中启用主题