Androd之标签页面切换(18)
程序员文章站
2022-05-22 16:46:23
...
标签,在使用手机中经常会用到标签,首先我们用继承TabActivity来实现一个简单标签。
首先认识TabHost相当于放标签的容器,Tabspec就是意义上的标签了,这里我们定义了三个标签分别用不同组件加以区别,首先定义布局管理器tab.xml
<LinearLayout xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/tab1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <AnalogClock android:id="@+id/analogClock1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <DigitalClock android:id="@+id/digitalClock1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="DigitalClock" /> </LinearLayout> <LinearLayout android:id="@+id/tab2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:id="@+id/tab3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <DialerFilter android:id="@+id/dialerFilter1" android:layout_width="match_parent" android:layout_height="wrap_content" > <EditText android:id="@android:id/hint" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hint" /> <EditText android:id="@android:id/primary" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@android:id/hint" android:text="Primary" /> </DialerFilter> <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="男" /> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="女" /> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="其他" /> </RadioGroup> </LinearLayout> </LinearLayout>
内嵌三个布局管理器用来显示
接下来看activity代码:
public class MainActivity extends TabActivity { private TabHost mytabhost=null; private int tab[]={R.id.tab1,R.id.tab2,R.id.tab3};//将要显示的三个标签布局管理器id protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //自定义组件 this.mytabhost=super.getTabHost();//取得Tabhost LayoutInflater.from(this).inflate(R.layout.tab,//定义转换的布局管理器 this.mytabhost.getTabContentView(),//指定标签增加的容器 true);//实例化布局管理中的组件 for(int i=0;i<tab.length;i++){ TabSpec mytab=mytabhost.newTabSpec("tab"+i);//定义tabspec mytab.setIndicator("标签"+i);//设置标签文字 mytab.setContent(tab[i]);//设置标签组件 this.mytabhost.addTab(mytab);//添加标签 } } }
运行效果如下:
- 第二种方法,继承自Activity类
定义tab.xml
<?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:id="@+id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" /> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tab_edit" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:id="@+id/edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请输入检索关键字..." android:textSize="18px" /> <Button android:id="@+id/but" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="搜索" /> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tab_clock" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <AnalogClock android:id="@+id/myAnalogClock" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tab_sex" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <RadioGroup android:id="@+id/sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <RadioButton android:id="@+id/male" android:checked="true" android:text="性别:男" /> <RadioButton android:id="@+id/female" android:text="性别:女" /> </RadioGroup> </LinearLayout> </FrameLayout> </LinearLayout> </TabHost>
activity:
public class MyTabHostDemo extends Activity { // 继承了TabActivity private TabHost myTabHost; private int[] layRes = new int[] { R.id.tab_edit, R.id.tab_clock, R.id.tab_sex }; // 这些是内嵌布局文件的ID @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.tab) ; this.myTabHost = (TabHost) super.findViewById(R.id.tabhost) ; this.myTabHost.setup() ; // 建立TabHost对象 for (int x = 0; x < this.layRes.length; x++) { TabSpec myTab = this.myTabHost.newTabSpec("tab" + x) ; myTab.setIndicator("标签 - " + x) ; myTab.setContent(this.layRes[x]) ; this.myTabHost.addTab(myTab) ; } this.myTabHost.setCurrentTab(0) ; // 默认显示的标签索引 } }
效果与上述一致
上一篇: DOM删除节点
下一篇: Opera胜出浏览器兼容性测试之战
推荐阅读