实现类似微博的BottomBar
主要布局:
package com.test.activity;import android.app.TabActivity;import android.content.Intent;import android.os.Bundle;import android.view.Window;import android.widget.RadioGroup;import android.widget.RadioGroup.OnCheckedChangeListener;import android.widget.TabHost;import com.test.testbottombar.R;/** * MainTabAcitivity * @author LinHang_He * */public class MainTabActivity extends TabActivity implements OnCheckedChangeListener{private RadioGroup mainTab;private TabHost mTabHost;//内容Intentprivate Intent mHomeIntent;private Intent mNewsIntent;private Intent mInfoIntent;private Intent mSearchIntent;private Intent mMoreIntent;private final static String TAB_TAG_HOME="tab_tag_home";private final static String TAB_TAG_NEWS="tab_tag_news";private final static String TAB_TAG_INFO="tab_tag_info";private final static String TAB_TAG_SEARCH="tab_tag_search";private final static String TAB_TAG_MORE="tab_tag_more"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); mainTab=(RadioGroup)findViewById(R.id.main_tab); mainTab.setOnCheckedChangeListener(this); prepareIntent(); setupIntent(); } /** * 准备tab的内容Intent */private void prepareIntent() {//mHomeIntent=new Intent(this, HomeActivity.class);mHomeIntent=new Intent(this, FriendsDynamicActivity.class);mNewsIntent=new Intent(this, InfoActivity.class);mInfoIntent=new Intent(this, FriendsOrGroupActivity.class);mSearchIntent=new Intent(this,SquareActivity.class);mMoreIntent=new Intent(this, MoreActivity.class);}/** * */private void setupIntent() {this.mTabHost=getTabHost();TabHost localTabHost=this.mTabHost;localTabHost.addTab(buildTabSpec(TAB_TAG_HOME, R.string.main_home, R.drawable.icon_1_n, mHomeIntent));localTabHost.addTab(buildTabSpec(TAB_TAG_NEWS, R.string.main_news, R.drawable.icon_2_n, mNewsIntent));localTabHost.addTab(buildTabSpec(TAB_TAG_INFO, R.string.main_my_info, R.drawable.icon_3_n, mInfoIntent));localTabHost.addTab(buildTabSpec(TAB_TAG_SEARCH, R.string.menu_search, R.drawable.icon_4_n, mSearchIntent));localTabHost.addTab(buildTabSpec(TAB_TAG_MORE, R.string.more, R.drawable.icon_5_n, mMoreIntent));}private TabHost.TabSpec buildTabSpec(String tag, int resLabel, int resIcon,final Intent content) {return this.mTabHost.newTabSpec(tag).setIndicator(getString(resLabel),getResources().getDrawable(resIcon)).setContent(content);} public void onCheckedChanged(RadioGroup group, int checkedId) {switch(checkedId){case R.id.radio_button0:this.mTabHost.setCurrentTabByTag(TAB_TAG_HOME);break;case R.id.radio_button1:this.mTabHost.setCurrentTabByTag(TAB_TAG_NEWS);break;case R.id.radio_button2:this.mTabHost.setCurrentTabByTag(TAB_TAG_INFO);break;case R.id.radio_button3:this.mTabHost.setCurrentTabByTag(TAB_TAG_SEARCH);break;case R.id.radio_button4:this.mTabHost.setCurrentTabByTag(TAB_TAG_MORE);break;}} }
?创建需要的5个Activity
?
布局文件main.xml
<?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" android:background="#ffffff" > <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="0.0dip" android:layout_weight="1.0"/> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.0" android:visibility="gone"/> <RadioGroup android:id="@+id/main_tab" android:background="@drawable/maintab_toolbar_bg" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:layout_gravity="bottom"> <RadioButton android:layout_marginTop="2.0dip" android:text="@string/main_home" android:drawableTop="@drawable/icon_1_n" android:id="@+id/radio_button0" style="@style/main_tab_bottom"/> <RadioButton android:layout_marginTop="2.0dip" android:text="@string/main_news" android:drawableTop="@drawable/icon_2_n" android:id="@+id/radio_button1" style="@style/main_tab_bottom"/> <RadioButton android:layout_marginTop="2.0dip" android:text="@string/main_my_info" android:drawableTop="@drawable/icon_3_n" android:id="@+id/radio_button2" style="@style/main_tab_bottom"/> <RadioButton android:layout_marginTop="2.0dip" android:text="@string/menu_search" android:drawableTop="@drawable/icon_4_n" android:id="@+id/radio_button3" style="@style/main_tab_bottom"/> <RadioButton android:layout_marginTop="2.0dip" android:text="@string/more" android:drawableTop="@drawable/icon_5_n" android:id="@+id/radio_button4" style="@style/main_tab_bottom"/> </RadioGroup> </LinearLayout></TabHost>
?创建drawable文件夹,添加home_btn_bg.xml
?
<?xml version="1.0" encoding="UTF-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_enabled="true" android:state_pressed="false" android:drawable="@drawable/home_btn_bg_d"/><item android:state_enabled="true" android:state_pressed="true" android:drawable="@drawable/home_btn_bg_d" /> <item android:state_enabled="true" android:state_checked="true" android:drawable="@drawable/home_btn_bg_d" /> <item android:drawable="@drawable/transparent" /></selector>
?在values文件夹下添加dimens.xml
<?xml version="1.0" encoding="utf-8"?><resources><dimen name="bottom_tab_padding_drawable">2.0dip</dimen><dimen name="bottom_tab_padding_up">5.0dip</dimen><dimen name="bottom_tab_font_size">10.0dip</dimen></resources>
??在values文件夹下添加drawables.xml
<?xml version="1.0" encoding="utf-8"?><resources><item type="drawable" name="transparent">#00000000</item></resources>
?strings.xml
<resources> <string name="app_name">TestBottomBar</string> <string name="main_home">首页</string> <string name="main_news">新闻</string> <string name="main_my_info">信息</string> <string name="menu_search">搜索</string> <string name="more">更多</string></resources>
?styles.xml
<resources> <style name="AppTheme" parent="android:Theme.Light" /> <style name="main_tab_bottom"> <item name="android:textSize">@dimen/bottom_tab_font_size</item> <item name="android:textColor">#ffffffff</item> <item name="android:ellipsize">marquee</item> <item name="android:gravity">center_horizontal</item> <item name="android:background">@drawable/home_btn_bg</item> <item name="android:paddingTop">@dimen/bottom_tab_padding_up</item> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:button">@null</item> <item name="android:singleLine">true</item> <item name="android:drawablePadding">@dimen/bottom_tab_padding_drawable</item> <item name="android:layout_weight">1.0</item> </style></resources>
?
?
?
?
?