#嵌入式安卓开发#
嵌入式安卓开发第三篇《高级控件之TabHost》
新手驿站第三篇《高级控件之TabHost》
1、在安卓应用程序中,普及应用的切换界面总少不了TabHost高级控件。主要因为TabHost使界面切换简洁简单和易操作,在手机应用程序当中,TabHost控件已经主导了界面切换的领域,看似很高大上,其实实现它并不难,今天我们将来玩转TabHost。
2、一般在应用程序当中的主界面总会有这样的选项:比如某信里面的:"某信","通讯录","发现","我",这几个。对应的这四个选项它与之对应的四个布局文件。首先我们来TabHost的组成部分:TabHost是整个Tab的容器,包含TabWidget和FrameLayout两个部分,TabWidget部分是Tab的表情,FrameLayoout部分是Tab的内容。
3、实现TabHost方式有两种方式:(1)继承TabActivity (2)继承Activity类。以下是代码部分,将会更深入讲解如何使用TabHost实现界面切换效果。(3)首先我们使用继承TabActivity的方式。第一个.java文件对应布局文件分别为:
MainActivity文件为(这是主文件,其余为Activity01-02-03-04都同理,在主文件下面是Activity01):
MainActivity文件:
import android.app.LocalActivityManager;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TabHost;
public class MainActivity extends TabActivity{
private TabHost tabhost;
private RadioGroup main_radiogroup; //定义组按钮控件
//定义某信控件,定义地址控件,定义朋友控件,定义设置控件
private RadioButton tab1, tab2, tab3,tab4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.demo);
//获取相应控件按钮
main_radiogroup = (RadioGroup) findViewById(R.id.main_radiogroup);
tab1 = (RadioButton) findViewById(R.id.tab1);
tab2 = (RadioButton) findViewById(R.id.tab2);
tab3 = (RadioButton) findViewById(R.id.tab3);
tab4 = (RadioButton) findViewById(R.id.tab4);
//往TabWidget添加Tab
tabhost = getTabHost();
tabhost.addTab(tabhost.newTabSpec("tag1").setIndicator("0").setContent(new Intent(this,Activity1.class)));
tabhost.addTab(tabhost.newTabSpec("tag2").setIndicator("1").setContent(new Intent(this,Activity2.class)));
tabhost.addTab(tabhost.newTabSpec("tag3").setIndicator("2").setContent(new Intent(this,Activity3.class)));
tabhost.addTab(tabhost.newTabSpec("tag4").setIndicator("3").setContent(new Intent(this,Activity4.class)));
//设置监听事件
checkListener checkradio = new checkListener();
main_radiogroup.setOnCheckedChangeListener(checkradio);
//监听类
public class checkListener implements OnCheckedChangeListener{
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
//setCurrentTab 通过标签索引设置当前显示的内容
//setCurrentTabByTag 通过标签名设置当前显示的内容
switch(checkedId){
case R.id.tab1:
tabhost.setCurrentTab(0);
//或
//tabhost.setCurrentTabByTag("tag1");
break;
case R.id.tab2:
tabhost.setCurrentTab(1);
case R.id.tab3:
tabhost.setCurrentTab(2);
case R.id.tab4:
tabhost.setCurrentTab(3);
Activity01文件:
package com.example.tab;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
public class Activity1 extends Activity{
setContentView(R.layout.tab1_layout);
这是主文件对应的主布局为:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/tabhost"
>
<LinearLayout
android:orientation="vertical"
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@drawable/background2" >
</FrameLayout>
<!-- 隐藏TabWidget -->
<TabWidget
android:id="@android:id/tabs"
android:visibility="gone"
android:layout_height="wrap_content"
</TabWidget>
<!-- 视觉上,用单选按钮替代TabWidget -->
<RadioGroup
android:id="@+id/main_radiogroup"
android:layout_height="57dp"
android:layout_marginTop="0dp"
android:background="@drawable/tt"
android:orientation="horizontal"
android:paddingTop="8dp" >
<RadioButton
android:id="@+id/tab1"
android:layout_marginLeft="10dp"
android:checked="true"
android:drawableTop="@drawable/tab_weixin"
/>
android:id="@+id/tab2"
android:drawableTop="@drawable/tab_address"
android:id="@+id/tab3"
android:drawableTop="@drawable/tab_frd"
android:id="@+id/tab4"
android:layout_marginLeft="20dp"
android:drawableTop="@drawable/tab_set"
</RadioGroup>
</LinearLayout>
</TabHost>
其余的同理:如图,大家建立可以根据参考:
查看评论 回复