Android—自定義標題欄的實現及遇見的問題解決


開發者設計界面時候往往不會使用系統自帶的標題欄,因為不美觀,所以需要自己設置標題欄。

1.根據需求在xml文件中設置標題布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#1e9ee1" >

    <TextView
        android:id="@+id/tv_titlename"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="標題"
        android:textColor="#fff"
        android:textSize="18sp" />

    <Button
        android:id="@+id/brn_search_back"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_alignBottom="@+id/tv_titlename"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="16dp"
        android:background="@drawable/mreturn" />

    <ImageView
        android:id="@+id/iv_basetitlewring"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/tv_titlename"
        android:layout_marginRight="16dp"
        android:background="#0000" />

</RelativeLayout>

2.在values的styles中將以上標題設置成自己的style

 <style name="CustomTheme" parent="AppBaseTheme">
        <item name="android:windowTitleSize">48dip</item>
    </style>

3.在醒目清單文件中用到該主題的activity的標簽中加入 android:theme="@style/CustomTheme"

4.在activity的java文件的onCreate()方法中編輯以下代碼:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.activity_main);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
                R.layout.base_title);

注意:只寫上面這些的話有可能在 setContentView(R.layout.activity_main);這句會報空指針異常導致程序停止運行

解決:在values的styles中自己的主題加 <item name="android:windowActionBar" tools:ignore="NewApi">false</item>(親測可用)

希望能給大家帶來幫助謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM