Android入门笔记之标签布局(Tab Layout)
<1>简介
今天学习Tab布局。通过标签的切换来实现内容的切换。实现标签布局有多种方法。一种将所有的标签处理程序写在同一个Activity中,但布局文件相对复杂;另一种将各个标签内容各写成一个Activity,布局文件相对简单。本文采用前一种方法。
<2>关键步骤
TabActivity:This class was deprecated in API level13.New applications should use Fragments instead of this class.
TabSpec与TabHost
TabHost相当于浏览器中浏览器分布的集合,而Tabspec则相当于浏览器中的每一个分页面。在Android中,每一个TabSpec分布可以是一个组件,也可以是一个布局,然后将每一个分页装入TabHost中,TabHost即可将其中的每一个分页一并显示出来。
(1)继承TabActivity:在此之前继承的都是android.app.Activity类,但是这里需要继承android.app.TabActivity。
(2)创建TabHost分布菜单对象,利用以下代码。
LayoutInflater.from(this).inflate(R.layout.main,tableHost.getTabContentView());
(3)实例化实分页
布局文件中,一个framelayout包含三个linearlayout,三个linearlayout重叠在同一位置。在MyTabActivity中实现了OnTabChangeListener接口,该接口实现对Tab改变是事件的监听,重载实现onTabChanged(String arg0)方法,其中arg0为对应的是实例中每个分页传入的分页ID。
<3>出现的问题
出现堆栈溢出的问题,即java.lang.stackoverflowerror。
通过Logcat找到相应的代码,找到错误,通常为函数循环递归造成。
<4>代码及解释
activity_tab.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51<?xml version="1.0" encoding="UTF-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/tab1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tabtext1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" /> </LinearLayout> <LinearLayout android:id="@+id/tab2" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tabtext2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2" /> </LinearLayout> <LinearLayout android:id="@+id/tab3" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tabtext3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3" /> </LinearLayout> </FrameLayout>
MyTabActivity.java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57package com.ui.tab; import android.app.TabActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.widget.TabHost; import android.widget.TextView; import android.widget.TabHost.OnTabChangeListener; import android.widget.TabHost.TabSpec; import com.test.R; public class MyTabActivity extends TabActivity implements OnTabChangeListener{ /** * @ProjectName: [androidtest] * @Package: [com.ui.tab.TabActivity.java] * @ClassName: [TabActivity] * @Description: * @Author: [gmj] * @CreateDate: [2013-8-30 下午2:39:50] * @Version: [v1.0] */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TabHost tabhost = this.getTabHost(); LayoutInflater.from(this).inflate(R.layout.activity_tab, tabhost.getTabContentView() , true); TabSpec tabA = tabhost.newTabSpec("A").setIndicator("AAA" , this.getResources().getDrawable(R.drawable.img1)).setContent(R.id.tab1); tabhost.addTab(tabA); TabSpec tabB = tabhost.newTabSpec("B").setIndicator("BBB" , this.getResources().getDrawable(R.drawable.img2)).setContent(R.id.tab2); tabhost.addTab(tabB); TabSpec tabC = tabhost.newTabSpec("C").setIndicator("CCC" , this.getResources().getDrawable(R.drawable.img3)).setContent(R.id.tab3); tabhost.addTab(tabC); tabhost.setOnTabChangedListener(this); onTabChanged("A");//预先设置为A分页 } @Override public void onTabChanged(String arg0) { // TODO Auto-generated method stub if(arg0.equals("A")){ TextView tv = (TextView)findViewById(R.id.tabtext1); tv.setText("123456"); } if(arg0.equals("B")){ TextView tv2 = (TextView)findViewById(R.id.tabtext2); tv2.setText("abcdef"); } if(arg0.equals("C")){ TextView tv3 = (TextView)findViewById(R.id.tabtext3); tv3.setText("ghjkl"); } } }
最后
以上就是文艺未来最近收集整理的关于Android入门笔记之标签布局(Tab Layout)的全部内容,更多相关Android入门笔记之标签布局(Tab内容请搜索靠谱客的其他文章。
发表评论 取消回复