Android自定義TitleBar

項目中很多地方都會遇到標題欄中需要添加返回按鈕的情況,第一次自定義標題欄,做下記錄。

一、自定義標題欄顏色和高度

直接在Activity的屬性中定義即可。

<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Light">
    <item name="android:windowTitleBackgroundStyle">@style/settingsTitleBg</item>
    <item name="android:windowTitleSize">40dp</item>
</style>
 
<style name="settingsTitleBg">
    <item name="android:background">#0000ff</item>
</style>

定義標題欄背景色需要使用到android:windowTitleBackgroundStyle屬性,給這個屬性指定一個style,這裡為settingsTitleBg,然後在其中指定android:background的顏色即可。

指定標題欄高度隻需要修改android:windowTitleSize的值即可。

二、自定義標題欄佈局

調用如下方法即可:

    public static void getCustomTitle(Activity activity, String title) {
        mActivity = activity;
        mActivity.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        mActivity.setContentView(R.layout.custom_title);
        mActivity.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
                R.layout.custom_title);

        TextView textView = (TextView) activity.findViewById(R.id.title_content_text);
        textView.setText(title);
        Button titleBackBtn = (Button) activity.findViewById(R.id.title_back_button);
        titleBackBtn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Log.d("Title back","key down");
                mActivity.finish();
            }
        });
    }

這個方法中使用到瞭R.layout.custom_title佈局,這個佈局便是可以隨意自定義的佈局文件,這裡指定的佈局文件如下:
custom_title.xml

<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="https://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent">
    <button android:layout_marginleft="10dp" android:layout_gravity="center_vertical" android:background="@drawable/back" android:id="@+id/title_back_button" android:layout_width="20dp" android:layout_height="20dp">
    <textview android:layout_gravity="center_vertical" android:layout_marginleft="10dp" android:id="@+id/title_content_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textsize="20sp" android:textcolor="#FFFFFF">
</textview></button></linearlayout>

完成後在setContentView之前調用getCustomTitle方法即可完成自定義標題欄的工作。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//設置全屏
        CustomTitle.getCustomTitle(this, "系統信息");
        setContentView(R.layout.activity_main);

CustomTitle方法的第一個參數就是當前的Activity,第二個參數是標題欄的標題。CustomTitle是我定義的一個類,其中隻有getCustomTitle一個靜態方法。
至此,效果如下:
這裡寫圖片描述

You May Also Like