Android标题样式自定义
2015-01-20 19:40
441 查看
前言
最近一直在研究安卓的标题样式,包括Theme.Light主题自带的标题以及ActionBar的样式,也参考了网上很多的方法,但是发现普遍存在一个问题:刚开始加载程序时,还是会显示之前的标题风格,然后显示最终自定义的风格。分析原因,是因为在Activity中用代码设置的,而安卓的界面首先是先加载XML文件中的布局,从这一点我们就找到了思路:在XML中就已经先定义好标题。
思路
1.把系统之前的标题去掉,使用无标题Theme,比如Theme.Light.NoTitleBar或者Theme.Holo.Light.NoActionBar
2.在Activity自带的xml布局文件中,定义标题(TextView,使文字居中)
步骤
1.在AndroidManifest文件中使用上述主题
2.修改xml布局文件,如下
这里我使用的是LinearLayout布局方式,这里注意的是:使用了LinearLayout方式,那么它的布局方向应该是android:orientation="vertical",标题其实是一个TextView,width是父容器的宽度,注意gravity是textView中文字的位置,不是整个TextView在Activity中的位置。
当然也可以使用RelativeLayout,则TextView最后一条的属性改成android:layout_centerHorizontal="true"就行
使用时和原来一样,在Activity的onCreate中,setContentView(R.layout.activity.main)
进阶
为了实现标题布局的复用,还可以当独将标题自定义为一个xml,比如我在layout文件夹下新建一个title.xml文件,内容如下
这里使用的是FrameLayout,目的是为了以前如果需要添加其他东西(比如类似QQ左上角的返回,右上角的添加等),FrameLayout的特征是,后来的东西可以部分或者全部遮挡之前的,在这里用到的就是这个特性,当然用其他布局方式也行。
然后在activity_main.xml中内容加入如下,位置和刚开始新建一个应用时默认的TextView位置是并排的,不过要放在第一个位置。
关于include的使用,可以见到的理解为就是把布局文件加进来,这里的width和height都是重要的,不可遗漏,不然会出问题。include具体可以用法可以参考Android抽象布局
最近一直在研究安卓的标题样式,包括Theme.Light主题自带的标题以及ActionBar的样式,也参考了网上很多的方法,但是发现普遍存在一个问题:刚开始加载程序时,还是会显示之前的标题风格,然后显示最终自定义的风格。分析原因,是因为在Activity中用代码设置的,而安卓的界面首先是先加载XML文件中的布局,从这一点我们就找到了思路:在XML中就已经先定义好标题。
思路
1.把系统之前的标题去掉,使用无标题Theme,比如Theme.Light.NoTitleBar或者Theme.Holo.Light.NoActionBar
2.在Activity自带的xml布局文件中,定义标题(TextView,使文字居中)
步骤
1.在AndroidManifest文件中使用上述主题
2.修改xml布局文件,如下
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="match_parent" android:layout_height="50dp" android:background="#aa0000" android:textColor="#ffffff" android:textSize="22sp" android:text="萨摩耶" android:gravity="center_horizontal|center_vertical" /> </LinearLayout>
这里我使用的是LinearLayout布局方式,这里注意的是:使用了LinearLayout方式,那么它的布局方向应该是android:orientation="vertical",标题其实是一个TextView,width是父容器的宽度,注意gravity是textView中文字的位置,不是整个TextView在Activity中的位置。
当然也可以使用RelativeLayout,则TextView最后一条的属性改成android:layout_centerHorizontal="true"就行
使用时和原来一样,在Activity的onCreate中,setContentView(R.layout.activity.main)
进阶
为了实现标题布局的复用,还可以当独将标题自定义为一个xml,比如我在layout文件夹下新建一个title.xml文件,内容如下
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/tv2" android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="22sp" android:background="#bb0000" android:gravity="center_horizontal|center_vertical" android:textColor="#ffffff" android:text="@string/app_name" /> </FrameLayout>
这里使用的是FrameLayout,目的是为了以前如果需要添加其他东西(比如类似QQ左上角的返回,右上角的添加等),FrameLayout的特征是,后来的东西可以部分或者全部遮挡之前的,在这里用到的就是这个特性,当然用其他布局方式也行。
然后在activity_main.xml中内容加入如下,位置和刚开始新建一个应用时默认的TextView位置是并排的,不过要放在第一个位置。
<include android:layout_width="match_parent" android:layout_height="50dp" layout="@layout/title" />
关于include的使用,可以见到的理解为就是把布局文件加进来,这里的width和height都是重要的,不可遗漏,不然会出问题。include具体可以用法可以参考Android抽象布局
相关文章推荐
- android,自定义无标题对话框(继承Dialog类,非AlertDialog)的样式
- Android—自定义ActionBar标题与菜单中的文字样式
- Android dialog无标题栏样式style(for 自定义dialog)
- android 自定义标题样式
- android Toast 自定义样式
- Android中preference 自定义样式
- android自定义Spinner下拉菜单(下拉列表框)样式
- Android: 自定义Tab样式
- android自定义标题
- Android 自定义Dialog样式
- Android 自定义RadioButton的样式
- Android开发基础:自定义下拉列表样式(spinner的用法)
- Android 自定义RadioButton的样式
- android 自定义view的样式
- android自定义按钮控件样式
- 自定义android的tab样式
- Android自定义Toast样式
- android 自定义title样式
- Android: 自定义Tab样式【转】
- 【Android】修改Activity的标题样式