您的位置:首页 > 移动开发 > Android开发

Android自定义标题栏

2016-04-11 11:48 387 查看
Android自带的标题栏样式非常的单调,有时候会想要自定义自己的标题栏样式,但是Android默认是不允许设定标题栏样式的,所以需要手动去设置它:

首先,在java代码onCreate方法中【代码的顺序必须按照以下排,否则会没有效果】:

super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);   //设置自定义标题栏时必须先指定此变量
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);   //设置标题栏布局为自己的自定义布局


其中,requestWindowFeature还有其它许多变量:

DEFAULT_FEATURES:系统默认状态,一般不需要指定

FEATURE_CONTEXT_MENU:启用ContextMenu,默认该项已启用,一般无需指定

FEATURE_CUSTOM_TITLE:自定义标题。当需要自定义标题时必须指定。如:标题是一个按钮时

FEATURE_INDETERMINATE_PROGRESS:不确定的进度

FEATURE_LEFT_ICON:标题栏左侧的图标

FEATURE_NO_TITLE:无标题

FEATURE_OPTIONS_PANEL:启用“选项面板”功能,默认已启用。

FEATURE_PROGRESS:进度指示器功能

FEATURE_RIGHT_ICON:标题栏右侧的图标

接着自定义标题栏的布局文件title.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/app_name"
android:gravity="center"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设置"/>
</LinearLayout>


直到这一步,我们只是换了标题栏的布局,并不能改变它的高度或者背景颜色,因此可以通过再定义style来设置:

在style.xml中:



<style name ="CustomWindowTitleBackground">
     <item name ="android:background">#1F497D</item>
</style>
<style name="title"  parent="android:Theme">
     <item name ="android:windowTitleSize">45dp</item>
     <item name ="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item>
</style>


最后,还要将该样式设置到Activity中,在AndroidManifest.xml中:




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: