歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android應用底部導航欄(選項卡)實例

Android應用底部導航欄(選項卡)實例

日期:2017/3/1 10:30:05   编辑:Linux編程
現在很多Android的應用都采用底部導航欄的功能,這樣可以使得用戶在使用過程中隨意切換不同的頁面,現在我采用TabHost組件來自定義一個底部的導航欄的功能。

我們先看下該demo實例的框架圖:

其中各個類的作用以及資源文件就不詳細解釋了,還有資源圖片(在該Demo中借用了其它應用程序的資源圖片)也不提供了,大家可以自行更換自己需要的資源圖片。直接上各個布局文件或各個類的代碼:

[1] res/layout目錄下的 maintabs.xml 源碼:

[html]
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <TabHost android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"
  3. xmlns:android="http://schemas.android.com/apk/res/android">
  4. <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
  5. <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="0.0dip" android:layout_weight="1.0" />
  6. <TabWidget android:id="@android:id/tabs" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.0" />
  7. <RadioGroup
  8. android:gravity="center_vertical" android:layout_gravity="bottom" android:orientation="horizontal" android:id="@id/main_radio" android:background="@drawable/maintab_toolbar_bg"
  9. android:layout_width="fill_parent" android:layout_height="wrap_content">
  10. <RadioButton android:id="@id/radio_button0" android:layout_marginTop="2.0dip" android:text="@string/main_home" android:drawableTop="@drawable/icon_1_n" style="@style/main_tab_bottom" />
  11. <RadioButton android:id="@id/radio_button1" android:layout_marginTop="2.0dip" android:text="@string/main_news" android:drawableTop="@drawable/icon_2_n" style="@style/main_tab_bottom" />
  12. <RadioButton android:id="@id/radio_button2" android:layout_marginTop="2.0dip" android:text="@string/main_manage_date" android:drawableTop="@drawable/icon_3_n" style="@style/main_tab_bottom" />
  13. <RadioButton android:id="@id/radio_button3" android:layout_marginTop="2.0dip" android:text="@string/main_friends" android:drawableTop="@drawable/icon_4_n" style="@style/main_tab_bottom" />
  14. <RadioButton android:id="@id/radio_button4" android:layout_marginTop="2.0dip" android:text="@string/more" android:drawableTop="@drawable/icon_5_n" style="@style/main_tab_bottom" />
  15. </RadioGroup>
  16. </LinearLayout>
  17. </TabHost>

[2] res/drawable 下的 home_btn_bg.xml 源碼:

[html]
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <selector
  3. xmlns:android="http://schemas.android.com/apk/res/android">
  4. <item android:state_focused="true" android:state_enabled="true" android:state_pressed="false" android:drawable="@drawable/home_btn_bg_s" />
  5. <item android:state_enabled="true" android:state_pressed="true" android:drawable="@drawable/home_btn_bg_s" />
  6. <item android:state_enabled="true" android:state_checked="true" android:drawable="@drawable/home_btn_bg_d" />
  7. <item android:drawable="@drawable/transparent" />
  8. </selector>

[3] res/values 下的源碼:

dimens.xml源碼

[html]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <dimen name="bottom_tab_font_size">10.0sp</dimen>
  4. <dimen name="bottom_tab_padding_up">5.0dip</dimen>
  5. <dimen name="bottom_tab_padding_drawable">2.0dip</dimen>
  6. <dimen name="switch_logo_bottom_padding">30.0sp</dimen>
  7. <dimen name="widget_height">100.0dip</dimen>
  8. <dimen name="sta_height">48.0dip</dimen>
  9. <dimen name="large_padding_length">20.0dip</dimen>
  10. <dimen name="widget_write_margin_top">19.0dip</dimen>
  11. <dimen name="widget_write_margin_left">10.0dip</dimen>
  12. <dimen name="widget_content_margin_top">20.0dip</dimen>
  13. <dimen name="widget_content_margin_left">10.0dip</dimen>
  14. <dimen name="widget_logo_size">35.0dip</dimen>
  15. <dimen name="title_height">74.0dip</dimen>
  16. <dimen name="new_blog_size">70.0dip</dimen>
  17. <dimen name="emotion_item_view_height">13.299988dip</dimen>
  18. <dimen name="splash_test_top_margin_top">20.0dip</dimen>
  19. <dimen name="splash_test_center_margin_right">0.0dip</dimen>
  20. <dimen name="title_text_size">20.0sp</dimen>
  21. <dimen name="normal_padding_length">10.0dip</dimen>
  22. <dimen name="no_result_padding_length">50.0dip</dimen>
  23. </resources>
Copyright © Linux教程網 All Rights Reserved