Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> Android 自定義TabActivity

Android 自定義TabActivity

編輯:高級開發

 系統自帶的TabActivity的效果不甚理想。開發中對其自定義可能有兩種,第一種,改變TAB行的位置,如放到頁面下方。第二種,對TabHost圖片的自定義。

  一、改變Tab欄的位置。

  Java代碼。在TabActivity的oncreate方法中添加

  setContentVIEw(R.layout.tab_host);

  其中 Layout tab_host.XML 是從系統資源文件中摳出來之後略作修改。

  系統原來的 tab_host.XML內容如下

  < ?XML version="1.0" encoding="utf-8"?>

  < !--

  /* //device/aPPS/common/assets/res/layout/tab_content.XML

  **

  ** Copyright 2006, The android Open Source Project

  **

  ** Licensed under the apache License, Version 2.0 (the "License");

  ** you may not use this file except in compliance with the License.

  ** You may obtain a copy of the License at

  **

  ** http://www.apache.org/licenses/LICENSE-2.0

  **

  ** Unless required by applicable law or agreed to in writing, software

  ** distributed under the License is distributed on an "AS IS" BASIS,

  ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implIEd.

  ** See the License for the specific language governing permissions and

  ** limitations under the License.

  */

  -->

  < TabHost XMLns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost"

  android:layout_width="match_parent" android:layout_height="match_parent">

  < LinearLayout android:orIEntation="vertical"

  android:layout_width="match_parent" android:layout_height="match_parent">

  < TabWidget android:id="@android:id/tabs" android:layout_width="match_parent"

  android:layout_height="wrap_content" android:layout_weight="0" />

  < FrameLayout android:id="@android:id/tabcontent"

  android:layout_width="match_parent" android:layout_height="0dip"

  接上頁

  android:layout_weight="1"/>

  < /LinearLayout>

  < /TabHost>

  要實現TAB欄在頁面下方,只需簡單修改。

  < ?XML version="1.0" encoding="utf-8"?>

  < TabHost XMLns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost"

  android:layout_width="fill_parent" android:layout_height="fill_parent">

  < LinearLayout android:orIEntation="vertical"

  android:layout_width="fill_parent" android:layout_height="fill_parent">

  < FrameLayout android:id="@android:id/tabcontent"

  android:layout_width="fill_parent" android:layout_height="0dip"

  android:layout_weight="1"/>

  < TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent"

  android:layout_height="wrap_content" android:layout_weight="0" />

  < /LinearLayout>

  < /TabHost>

  這樣,就實現了TAB欄在頁面下冊。需要注意的是,vIEw的id不要修改。

  二、自定義TAB的圖片。系統自帶的tab_indicator.XML內容如下

  < ?XML version="1.0" encoding="utf-8"?>

  < !-- Copyright (C) 2008 The android Open Source Project

  Licensed under the apache License, Version 2.0 (the "License");

  you may not use this file except in compliance with the License.

  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software

  distributed under the License is distributed on an "AS IS" BASIS,

  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implIEd.

  See the License for the specific language governing permissions and

  limitations under the License.

  -->

  < RelativeLayout XMLns:android="http://schemas.android.com/apk/res/android"

  接上頁

  android:layout_width="0dip"

  android:layout_height="64dip"

  android:layout_weight="1"

  android:layout_marginLeft="-3dip"

  android:layout_marginRight="-3dip"

  android:orIEntation="vertical"

  android:background="@android:drawable/tab_indicator">

  < ImageVIEw android:id="@+id/icon"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:layout_centerHorizontal="true"

  />

  < TextVIEw android:id="@+id/title"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:layout_alignParentBottom="true"

  android:layout_centerHorizontal="true"

  style="?android:attr/tabWidgetStyle"

  />

  < /RelativeLayout>

  可以看出,默認情況下,圖標在文字上方,並且不能占到整個格,無法滿足設計需要。因此可以重寫該Layout。

  編寫tab_in.XML

  < ?XML version="1.0" encoding="utf-8"?>

  < RelativeLayout XMLns:android="http://schemas.android.com/apk/res/android"

  android:layout_width="wrap_content"

  android:layout_height="64dip"

  android:orIEntation="vertical"

  >

  < /RelativeLayout>

  View vIEw1 = inflater.inflate(R.layout.tab_in, null);;

  View vIEw2 = inflater.inflate(R.layout.tab_in, null);;

  View vIEw3 = inflater.inflate(R.layout.tab_in, null);;

  vIEw1 .setBackgroundResource(R.drawable.record_upload_button_stateful);

  vIEw2 .setBackgroundResource(R.drawable.record_download_button_stateful);

  vIEw3 .setBackgroundResource(R.drawable.record_receive_button_stateful);

  tabHost.addTab(tabHost

  .newTabSpec("vIEw1")

  .setIndicator(vIEw1)

  );

  tabHost.addTab(tabHost

  .newTabSpec("vIEw2")

  .setIndicator(vIEw2)

  );

  tabHost.addTab(tabHost

  .newTabSpec("vIEw3")

  .setIndicator(vIEw3)

  );

  ---------------------------搞定

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved