自定義標題欄 android

定製一個layout佈局文件,比如瀏覽器的標題欄,它包含了網站的Favicon,自定義的進度條,和不確定的進度指示等等,
實現的方法自己控制吧。下面代碼在onCreate中使用,同時順序不要改變,否則將無法生效:
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);   
setContentView(R.layout.main);   //軟件activity的佈局
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);  //titlebar爲自己標題欄的佈局

 Layout下建立titlebar.xml:

複製代碼
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/back"
        android:textSize="18sp"
        android:textColor="#FF0000FF" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/share"
        android:textSize="18sp"
        android:textColor="#FFFFFF00" />
</LinearLayout>
複製代碼

 

這樣雖然可以在一定程度上定製標題欄, 不過, 這裏無法改變標題欄的高度和背景(背景設置之後會在兩端有兩個
非常難看的邊框).  據說, 原因是android 固有的. 
這裏有修改方法:
  原理是這樣的. 直接像上述代碼那樣添加title僅僅是把一個子界面添加到原有的title上的, 並沒有改變原來的屬性,
比如 標題欄大小, 標題欄背景. 這些需要在theme 主題裏面定義. 
  因此先定義一個style, 若修改背景請修改android:windowTitleBackgroundStyle
  若修改標題欄高度,請修改android:windowTitleSize
複製代碼
例子:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">

<style name="CustomWindowTitleBackground">
       <item name="android:background">#565656</item>
</style>

<style name="test" parent="android:Theme">
     <item name="android:windowTitleSize">50dp</item>
     <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item>
</style>
</resources>
複製代碼

 

 
在程序的android manifest.xml中對應:
複製代碼
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.guardian"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name" >
        <activity android:name=".Guardian"
                  android:label="@string/app_name"
                  android:theme = "@style/test"   //就在這裏
                  >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="4" />

</manifest> 
複製代碼

 

之後藉助於設置自定義的標題欄xml文件,就可以自定義標題欄佈局了
發佈了27 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章