晚上沒啥事作,朋友過生日喝了點酒,就不許備敲代碼了,在以前在網上找了一個底部導航欄的demo,下午就作了一下,實現的方法比較簡單,也很容易理解,是用TabActivity和TabHost作的。
java
不過好像在Android4.0之後放棄了TabActivity 改用 FragmentActivity,對於Fragment和 FragmentActivity我不是很懂,等我下來學懂了,再結合網上的例子寫一個demo。
好吧,廢話就不說了,咱們上代碼,照舊先來佈局文件。
這就是底部TabHost的主佈局文件
android
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" app
xmlns:tools="http://schemas.android.com/tools" ide
android:id="@android :id/tabhost" 佈局
android:layout_width="fill_parent" ui
android:layout_height="fill_parent" > this
<LinearLayout spa
android:layout_width="fill_parent" .net
android:layout_height="fill_parent" orm
android:orientation="vertical">
<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" />
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginTop="-10.0dip"
android:background="@drawable/bg_group_information_image"
android:paddingLeft="7.0dip"
android:paddingRight="7.0dip" >
<RadioGroup
android:id="@+id/main_radio"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/radio_home"
style="@style/main_tab_bottom"
android:drawableTop="@drawable/home_selector"
android:text="首頁" />
<RadioButton
android:id="@+id/radio_jinba"
style="@style/main_tab_bottom"
android:drawableTop="@drawable/jinba_selector"
android:text="進吧" />
<RadioButton
android:id="@+id/radio_person_info"
style="@style/main_tab_bottom"
android:drawableTop="@drawable/individual_selector"
android:text="我的" />
</RadioGroup>
</FrameLayout>
</LinearLayout>
</TabHost>
接下來就是按鈕的style
<style name="main_tab_bottom">
<item name="android:textSize">9.0sp</item>
<item name="android:textColor">#FFF</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:paddingTop">3.0dip</item>
<item name="android:paddingBottom">1.0dip</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginTop">2.0dip</item>
<item name="android:layout_marginBottom">1.0dip</item>
<item name="android:button">@null</item>
<item name="android:singleLine">true</item>
<item name="android:drawablePadding">3.0dip</item>
<item name="android:layout_weight">1.0</item>
</style>package com.example.myalarmclock;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RadioButton;
import android.widget.TabHost;
public class MainActivity extends TabActivity implements
OnCheckedChangeListener {
//定義單選按鈕
private RadioButton person, jinba, home;
// 定義Intent對象
private Intent mHomeIntent, mJinbaIntent, mPersonIntent;
// 定義TabHost對象
private TabHost mTabHost;
// 定義Tab選項卡標示符
private static final String HOME_TAB = "home_tab";
private static final String JINBA_TAB = "jinba_tab";
private static final String PERSON_TAB = "person_tab";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
/**
* 初始化組件
*/
private void initView(){
//獲得TabHost
mTabHost = getTabHost();
//獲得Intent對象
mHomeIntent = new Intent(this, HomeActivity.class);
mJinbaIntent = new Intent(this, JinbaActivity.class);
mPersonIntent = new Intent(this, PersonActivity.class);
//獲得單選按鈕對象
home = (RadioButton) findViewById(R.id.radio_home);
person = (RadioButton) findViewById(R.id.radio_person_info);
jinba = (RadioButton) findViewById(R.id.radio_jinba);
}
/**
* 初始化數據
*/
private void initData(){
//給單選按鈕設置監聽
home.setOnCheckedChangeListener(this);
person.setOnCheckedChangeListener(this);
jinba.setOnCheckedChangeListener(this);
//添加進Tab選項卡
mTabHost.addTab(buildTabSpec(HOME_TAB, mHomeIntent));
mTabHost.addTab(buildTabSpec(JINBA_TAB, mJinbaIntent));
mTabHost.addTab(buildTabSpec(PERSON_TAB, mPersonIntent));
//設置當前默認的Tab選項卡頁面
home.setChecked(true);
mTabHost.setCurrentTabByTag(HOME_TAB);
}
private TabHost.TabSpec buildTabSpec(String tag, Intent intent) {
TabHost.TabSpec tabSpec = mTabHost.newTabSpec(tag);
tabSpec.setContent(intent).setIndicator("");
return tabSpec;
}
/**
* Tab按鈕選中監聽事件
*/
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
switch (buttonView.getId()) {
case R.id.radio_home:
mTabHost.setCurrentTabByTag(HOME_TAB);
break;
case R.id.radio_jinba:
mTabHost.setCurrentTabByTag(JINBA_TAB);
break;
case R.id.radio_person_info:
mTabHost.setCurrentTabByTag(PERSON_TAB);
break;
}
}
}
}
不難吧,我都以爲沒什麼要說。
而後在去寫你定義好的avtivity吧,每一個activity都在intent裏定義好了,你也能夠本身修改本身的radiobutton
接下來就看看截圖
能夠吧,我公佈一下源碼,須要的同窗能夠看看。
http://115.com/lb/5lbdaatj91iw#
BaiduDemo.rar
115網盤禮包碼:5lbdaatj91iw