前言:最近在做一个项目,需求是标题栏要有三个控件,即:“返回”Button、“页面标题”TextView、“网络设置”Button。但是androidStudio默认只有一个“页面标题”TextView,这远远达不到我们的需求标准,那么该怎么做呢?答案是:自定义标题栏。好,话不多说,上步骤。
等等,需求分析再走一波:点击“返回”Button实现返回上一级页面、“页面标题”TextView起标识页面作用(即告诉用户当前页面哪一个页面)、点击”网路设置”按钮跳转到网络设置页面。
步骤1:新建login_actionbar.xml文件,用于编辑标题栏需要用到的控件
步骤2:编辑login_actionbar.xml文件,并且将它引用到我们要显示页面的.JAVA文件中。首先我们考虑到标题栏是三个按钮实现不同的功能(即点击“返回”按钮返回上一级页面、“页面标题”起修饰作用、点击“网络设置”按钮跳转到网络设置页面),那么我们就要在login_actionbar.xml文件中新增三个控件(分别是“返回”Button、“页面标题”标题、“网络设置”Button)。但是,“返回”按钮是有更简单的方法实现的。所以我们在login_actionbar.xml文件中只需要添加两个控件就可以了(即“页面标题”TextView、“网络设置”Button),下面具体看一下login_actionbar.xml的代码吧:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/display_title" //注意这里的ID,后面会用到
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:textColor="#ffffff"
android:layout_centerInParent="true" //将“页面标题”TextView居中
android:paddingRight="50dp"
android:text="title" />
<Button
android:id="@+id/display_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true" //“网络设置”Button右对齐
android:background="#008577"
android:text="button"/>
</RelativeLayout>
好了,现在“页面标题”TextView和“网络设置”Button都有了,但是有是有了,还没有引用呀!并且还差一个“返回”Button。别急....这个在java文件中写:
有小伙伴可能发现了这里获取ID的方式和我们平时用的不太一样,对啊,因为我们是从login_actionbar.xml文件中获取的呀!
这里的有些代码可能有的小伙伴看不太懂,没关系,我将可能有疑问的代码贴出来并标上注释就好了:
//显示标题栏返回按钮
actionBar.setDisplayHomeAsUpEnabled(true);
//设置返回按钮可点击
actionBar.setHomeButtonEnabled(true);
//使自定义的普通view能够在title栏显示
actionBar.setDisplayShowCustomEnabled(true);