Android開發:定製Activity的標題欄(Titlebar)

yangxi_001發表於2014-04-02

編輯titlebar.xml,使其內容如下:

<?xmlversion="1.0" encoding="utf-8"?>

<LinearLayout

       xmlns:Android="http://schemas.android.com/apk/res/android"

       android:orientation="horizontal"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content">

      

       <ImageView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:src="@drawable/magnifier"

                android:gravity="bottom"

       />

       <TextView

                 android:layout_width="wrap_content"

                 android:layout_height="38dip"

                 android:text="@string/app_name"

                 android:textColor="#FFFFFFFF"

                 android:textSize="14dip"

                 android:paddingTop="1dip"

       />

      

       <EditText

                   android:id="@+id/searchparameter"

                   android:layout_width="wrap_content"

                   android:layout_height="38dip"

                   android:text="ABCDEFGHIJ"

                   android:textSize="14dip"

                   android:layout_margin="1dip"

         />

        

         <Button android:id="@+id/button"

                   android:layout_width="wrap_content"

                   android:layout_height="38dip"

                   android:text="OK"

                   android:textSize="14dip"

         />

</LinearLayout>

 

在上面的LinearLayout中,增加了以下控制元件:

一個ImageView,用於顯示一個圖示

一個TextView,用於顯示應用的名稱

一個EditText,用於接收輸入

一個Button,用於測試

 

4.    修改CustomizeTitlebar.java,使之如下:

public class CustomizeTitlebar extends Activity

{

    @Override

    public void onCreate(Bundle savedInstanceState)

    {

       super.onCreate(savedInstanceState);

       requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

       setContentView(R.layout.main);

       getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);

    }

}

以上加粗的兩行很重要,而且必須要嚴格按照上面那樣的順序出現在程式碼中。即:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);必須出現在super.onCreate(savedInstanceState);之後,setContentView(R.layout.main);之前。其意思就是告訴系統,本程式要自己定義Titlebar;

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.titlebar); 則必須出現在setContentView之後,其意思就是告訴系統,自定義的佈局是R.layout.titlebar(即,我們前面編寫的titlebar.xml)

到這裡,不妨來執行一下,看看結果如何:


我們看到,Titlebar基本上按照我們的意思進行了改變,但也存在著一個缺陷:Titlebar太窄了,那麼怎樣改變Titlebar的高度呢?

相關文章