安卓默认的标题栏黑乎乎非常难看。不过可以通过theme来自定义标题栏样式。
在一次项目中需要把颜色修改为蓝色,高度40dp,标题文字居中的效果,不过网上没有搜到好的解决方法,又不想用自定义标题栏。所以把自己想出来的方法记下来。
步骤如下:
1.首先在values文件夹下创建colors.xml文件,内容如下:
- <?xml version="1.0" encoding="utf-8"?>
- <resources xmlns:android="http://schemas.android.com/apk/res/android" >
- <color name="blue">#ff004B97</color>
- </resources>
2.在styles.xml文件中添加以下代码:
- <style name="CustomTextApperance" >
- <item name="android:textColor">#fff</item>
- <item name="android:textSize">18sp</item>
- <item name="android:textStyle">bold</item>
- </style>
- <style name="CustomWindowTitle" parent="*android:WindowTitle">
- <item name="android:textAppearance">@style/CustomTextApperance</item>
- </style>
- <style name="CustomTitleBackground" parent="*android:WindowTitleBackground">
- <item name="android:background">@color/blue</item>
- </style>
- <!-- Application theme. -->
- <style name="CustomAppTheme" parent="android:Theme.Light">
- <item name="android:windowTitleStyle">@style/CustomWindowTitle</item>
- <item name="android:windowTitleBackgroundStyle">@style/CustomTitleBackground</item>
- <item name="android:windowTitleSize">40dp</item>
- </style>
其中和title相关的属性有
android:windowTitleStyle:设置标题样式,这个主要是设置显示标题文字的Textview的各项样式。
windowTitleBackgroundStyle:设置标题栏背景色。通过属性android:background设置,注意此属性需要为drowable资源,直接写类似#ff234562的颜色值将无效,所以需要将颜色值先定义到colors.xml文件中。
android:windowTitleSize:设置标题高度。
然后在AndroidManifest.xml中设置application的theme为android:theme="@style/CustomAppTheme"
经过上面的设置可以实现蓝色背景,高度40dp的标题栏,但是此时标题还没有居中。我曾经尝试在style中通过设置android:gravity=center等方式,但都没有成功。
后来在activity的代码中添加以下代码才实现了居中效果:
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- ...
- }
其中颜色代码为添加的代码。优快云代码没法上色。。。。。。
最终效果图:
效果实现了,但是在实际使用中却发现,每次打开界面的时候,标题文字仍然会靠左一段时间,然后才变为居中。这是因为标题栏在执行activity的onCreate方法前就显示出来了,而我们是在onCreate方法中设置的标题栏文字居中。最后无奈的解决方法是将标题栏的文字颜色修改为和标题栏背景色一样。然后再在onCreate方法中同时设置居中和标题颜色为白色。这样的效果为启动界面的前一小会看不到标题,然后出现居中的标题。
本文介绍如何通过修改Android项目的theme来实现自定义标题栏样式,包括设置标题栏颜色、高度及标题文字居中等。
5515

被折叠的 条评论
为什么被折叠?



