android控件09---TabHost

来源:互联网 发布:外国域名注册机构 编辑:程序博客网 时间:2024/06/14 20:10

标签页,能够用最小的空间显示更多的数据。是很多软件都需要用到的。

在Android里面常用的方法有两种:

1.继承TabActivity

2.自定义TabHost


下面,我们先来讲讲第一种:


Activity里面的代码如下:

public class MainActivity extends TabActivity { private TabHost tabhost; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.main); //这里无需加载主页面 //获取TabHost对象 tabhost = getTabHost(); //加载页面 LayoutInflater.from(this).inflate(R.layout.activity_main,tabhost.getTabContentView(), true);   //添加标签页//tabout.addTab(tabhost.newTabSpec("page1").setIndicator("第一页"),getResource().getDrawable(R.drawable.a1).setContent(R.id.layout));   //详细讲解可以看下一种方法Activity的注释        tabhost.addTab(tabhost.newTabSpec("page1").setIndicator("第一页").setContent(R.id.layout1));        tabhost.addTab(tabhost.newTabSpec("page2").setIndicator("第二页").setContent(R.id.layout2));        tabhost.addTab(tabhost.newTabSpec("page3").setIndicator("第三页").setContent(R.id.layout3));    }}


XML里面的代码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <LinearLayout        android:id="@+id/layout1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical">        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="这是第一个标签页"/>    </LinearLayout>    <LinearLayout        android:id="@+id/layout2"        android:orientation="vertical"        android:layout_width="wrap_content"        android:layout_height="wrap_content">        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="这是第二个标签页"/>    </LinearLayout>    <LinearLayout        android:id="@+id/layout3"        android:orientation="vertical"        android:layout_width="wrap_content"        android:layout_height="wrap_content">        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="这是第三个标签页"/>    </LinearLayout></LinearLayout>

运行效果图如下:

运行的时候没有出现标题栏







接下来就是不继承TabActivity,而是自定义TabHost。


这里先看XML里的代码:

<?xml version="1.0" encoding="utf-8"?><TabHost xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:id="@+id/tabhost"    >    <!-- tabhost用来存放标签对象    在标签页中,每一页和这一页的内容,是垂直摆放的所以这里用到了线性布局    -->    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:orientation="vertical"        >        <!-- 这里开始存放每个标签TabWidget ,这个标签可以存放所有的标签TabWidget        android:id="@android:id/tabs"这个是在系统文件中定义的,是写死的-->        <TabWidget            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:id="@android:id/tabs"            />        <!--android:id="@android:id/tabcontent"这个是在系统文件中定义的也,是写死的-->        <FrameLayout            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:id="@android:id/tabcontent"            >            <!-- 这里放的是第一个标签的内容 -->            <LinearLayout                android:layout_width="fill_parent"                android:layout_height="fill_parent"                android:id="@+id/page1"                >                <!-- 第一个的标签页显示的内容 -->                <TextView                    android:layout_width="fill_parent"                    android:layout_height="wrap_content"                    android:text="这是第一个标签页"                    />            </LinearLayout>            <!-- 第二个的标签页显示的内容 -->            <LinearLayout                android:layout_width="fill_parent"                android:layout_height="fill_parent"                android:id="@+id/page2"                >                <TextView                    android:layout_width="fill_parent"                    android:layout_height="wrap_content"                    android:text="这是第二个标签页"                    />            </LinearLayout>            <!-- 第三个的标签页显示的内容 -->            <LinearLayout                android:layout_width="fill_parent"                android:layout_height="fill_parent"                android:id="@+id/page3"                >                <TextView                    android:layout_width="fill_parent"                    android:layout_height="wrap_content"                    android:text="这是第三个标签页"                    />            </LinearLayout>        </FrameLayout>    </LinearLayout></TabHost>


然后是Activity里的内容:

public class MainActivity extends AppCompatActivity {    TabHost tabHost;    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //找到TabHost的标签集合        tabHost = (TabHost) this.findViewById(R.id.tabhost);        /*如果没有继承TabActivity时,通过下面这种方法加载启动tabHost.这一句在源代码中,        会根据findviewbyId()找到对应的TabWidget,还需要根据findViewById()找到        这个TabWidget下面对应的标签页的内容.也就是FrameLayout这个显示控件.*/        tabHost.setup();        //TabSpec这个是标签页对象.        TabHost.TabSpec tabSpec = tabHost.newTabSpec("page1");//新建一个标签页对象.        tabSpec.setIndicator(("首页"),getResources().getDrawable(R.drawable.a1));//设置这个标签页的标题和图片        tabSpec.setContent(R.id.page1);//指定标签页的内容页.        tabHost.addTab(tabSpec);//把这个标签页,添加到标签对象tabHost中.        tabSpec = tabHost.newTabSpec("page2");        tabSpec.setIndicator("第二页");        tabSpec.setContent(R.id.page2);        tabHost.addTab(tabSpec);        tabSpec = tabHost.newTabSpec("page3");        tabSpec.setIndicator("第三页");        tabSpec.setContent(R.id.page3);        tabHost.addTab(tabSpec);        // 设置标签页为默认的第一个页面.        tabHost.setCurrentTab(0);    }}



上面的2种添加方式均可,看个人喜好。

下面就是运行效果图:

这里却出现了标题栏







原创粉丝点击