2012年7月3日 星期二

Android 開發筆記 - 模仿 iOS UINavigationController 效果

為了給使用者有一致性的體驗,在 Android 環境上,實作 iOS UINavigationController 效果。


實作的方式很...直觀,就是每個 Activity 最上頭都擺在一個區域(header)來達成啦 XD


例如 header.xml:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:background="@drawable/background">
        <FrameLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center"
                android:background="@null">

               <TextView
                       android:layout_width="fill_parent"
                       android:layout_height="fill_parent"
                       android:text="@string/title"
                       android:gravity="center"
                       android:textAppearance="?android:attr/textAppearanceMedium" />

               <ImageButton
                       android:id="@+id/btn_right"
                       android:layout_width="wrap_content"
                       android:layout_height="wrap_content"
                       android:src="@drawable/btn_right"
                       android:background="@null"
                       android:contentDescription="@null"
                       android:layout_gravity="center_vertical|right"/>

        </FrameLayout>
</LinearLayout>


而其他的 Activity layout 可以在開頭就用類似方式 include 進來:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:gravity="center_horizontal"
       android:orientation="vertical">

       <include android:id="@+id/header"
              layout="@layout/header"
              android:layout_height="wrap_content"
              android:layout_width="fill_parent"/>
       …
</LinearLayout>


沒有留言:

張貼留言