1. 程式人生 > >Android--(13)--Android自定義實現actionbar實現微信標題欄

Android--(13)--Android自定義實現actionbar實現微信標題欄

昨天看了下actionbar的使用,今天來實現自定義的標題欄實現
在android的開發中有時我們需要更個性化的標題欄,而不僅僅是系統預定義的圖示加軟體名,同時有時候我們需要在標題欄中實現更多功能,如新增按鈕響應使用者點選。這就要求我們實現自定義標題欄。下面以微信的標題欄為例:

微信介面的標題欄:

step 1:寫標題欄佈局檔案
新建一個佈局檔案titleBar.xml檔案:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:background="#434343" 6 >
7 8 <TextView 9 android:id="@+id/barText" 10 android:layout_alignParentLeft="true" 11 android:layout_width="wrap_content" 12 android:layout_height
="wrap_content" 13 android:textColor="#FFFFFF" 14 android:layout_centerVertical="true" 15 16 android:textSize="20sp" 17 android:layout_marginLeft="5dp" 18 android:text="微信(4)" 19 />
20 21 <ImageView 22 android:id="@+id/barAdd" 23
android:layout_width="wrap_content" 24 android:layout_height="wrap_content" 25 android:src="@android:drawable/ic_menu_add" 26 android:layout_alignParentRight="true" 27 android:layout_marginRight="10dp" 28 android:layout_centerVertical="true" 29 />
30 31 <ImageView 32 android:id="@+id/barSearch" 33 android:layout_width="wrap_content" 34 android:layout_height="wrap_content" 35 android:src="@android:drawable/ic_menu_search" 36 android:layout_toLeftOf="@+id/barAdd" 37 android:layout_marginRight="20dp" 38 android:layout_centerVertical="true" 39 /> 40 </RelativeLayout>

step2:在原始檔OnCreat中新增:設定titleBar.xml為標題欄佈局

     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
         setContentView(R.layout.main);
         //設定標題佈局為titlebar
         getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
 }

step3:定義標題欄的風格

在values新建titleStyle.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="MyStyle" parent="android:Theme.Light">
        <item name="android:windowTitleSize">50dp</item><!-- //設定寬度 -->
        <item name="android:windowTitleBackgroundStyle">@style/titleColor</item>//設定背景風格,否則可能有邊框
    </style>
    <style name="titleColor">
         <item name="android:color">#434343</item>//設定背景色
    </style>

</resources>

在AndroidManifest.xml中修改配置:

在application中新增:
    android:theme="@style/MyStyle"

step4:新增點選處理:
在修改原始檔為:

 public class WeixinActivity extends Activity implements OnClickListener{
      /** Called when the activity is first created. */
      public ImageView addBtn;
      public ImageView searchBtn;
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
         requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
         setContentView(R.layout.main);
         //設定標題佈局為titlebar
                  getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);

         addBtn=(ImageView)this.findViewById(R.id.barAdd);
         searchBtn=(ImageView)this.findViewById(R.id.barSearch);

         addBtn.setOnClickListener(this);
         searchBtn.setOnClickListener(this);

  }

     @Override
     public void onClick(View v) {
         // TODO Auto-generated method stub
         switch(v.getId()){
         case R.id.barAdd:Toast.makeText(WeixinActivity.this, "你點選了新增", Toast.LENGTH_SHORT).show();break;
         case R.id.barSearch:Toast.makeText(WeixinActivity.this, "你點選了搜尋", Toast.LENGTH_SHORT).show();break;
         default:break;
         }
    }
 }

希望對初學者有用,自做筆記使用;