Android 自定義 TabActivity 的例項方法
系統自帶的TabActivity的效果不甚理想。開發中對TabActivity自定義可能有兩種:第一種:改變TAB行的位置,如放到頁面下方。第二種:對TabHost圖片的自定義。
一、改變Tab欄的位置
在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) );
相關文章
- 【例項】PowerQuery的自定義日曆
- android view 自定義viewgroup 例項--螢幕滑動AndroidView
- django自定義過濾器例項Django過濾器
- Android自定義View注意事項AndroidView
- jQuery自定義標籤程式碼例項jQuery
- Java 經典例項:自定義迭代器Java
- Vue.js自定義指令的用法與例項Vue.js
- css自定義列表計數程式碼例項CSS
- jquery自定義事件簡單例項程式碼jQuery事件單例
- MapReduce程式設計例項之自定義排序程式設計排序
- Qt自定義訊號槽的使用淺析+例項QT
- JDBC連線自定義sqlserver資料庫例項名(多個例項)JDBCSQLServer資料庫
- MapReduce程式設計例項之自定義分割槽程式設計
- node.js實現的自定義事件程式碼例項Node.js事件
- css自定義單選按鈕的樣式程式碼例項CSS
- Qt5MV自定義模型與例項淺析QT模型
- 自定義註解例項實現SQL語句生成SQL
- 自定義右鍵導航選單程式碼例項
- CSS自定義滑鼠指標形狀程式碼例項CSS指標
- css自定義滑鼠指標圖示程式碼例項CSS指標
- win10怎麼自定義開機啟動項_win10自定義開機啟動項的方法Win10
- Android自定義View之requestLayout方法和invalidate方法AndroidView
- php例項化物件的例項方法PHP物件
- win10自定義禁用系統啟動項的方法Win10
- 自定義監控項
- pyhanlp使用者自定義詞典新增例項說明HanLP
- js自定義回撥函式簡單程式碼例項JS函式
- Android自定義View之invalidate方法和postInvalidate方法AndroidView
- js自定義實現的簡單編碼和解碼程式碼例項JS
- jquery實現的讀取dat-*自定義資料程式碼例項jQuery
- Android 自定義viewAndroidView
- Android 自定義 TabLayoutAndroidTabLayout
- Android: 自定義ViewAndroidView
- Android自定義ToastAndroidAST
- Android 自定義 DrawableAndroid
- scroll-view元件bindscroll例項應用:自定義滾動條View元件
- css3自定義滾動條樣式程式碼例項CSSS3
- 自定義滑鼠懸浮連結彈出提示程式碼例項