当前位置:首页 » 安卓系统 » tabhost切换android

tabhost切换android

发布时间: 2022-06-29 09:43:40

A. android里实现一个tabhost显示怎么弄

Tab标签页是界面设计时经常使用的界面控件,可以实现多个分页之间的快速切换,每个分页可以显示不同的内容,下图是Android系统内置的Tab标签页,点击“呼出/接听键”后出现,用于电话呼出和查看拨号记录、联系人.

Tab标签页的使用
先要设计所有的分页的界面布局
在分页设计完成后,使用代码建立Tab标签页,并给每个分页添加标识和标题
最后确定每个分页所显示的界面布局
每个分页建立一个XML文件,用以编辑和保存分页的界面布局,使用的方法与设计普通用户界面没有什么区别

建立一个“TabDemo”程序,包含三个XML文件,分别为tab1.xml、tab2.xml和tab3.xml,这3个文件分别使用线性布局、相对布局和绝对布局示例中的main.xml的代码,并将布局的ID分别定义为layout01、layout02和layout03

关键代码如下:
10. public void onCreate(Bundle savedInstanceState) {
11. super.onCreate(savedInstanceState);
12. TabHost tabHost = getTabHost();
13. LayoutInflater.from(this).inflate(R.layout.tab1, tabHost.getTabContentView(),true);
14. LayoutInflater.from(this).inflate(R.layout.tab2, tabHost.getTabContentView(),true);
15. LayoutInflater.from(this).inflate(R.layout.tab3, tabHost.getTabContentView(),true);
16. tabHost.addTab(tabHost.newTabSpec("TAB1")
17. .setIndicator("线性布局").setContent(R.id.layout01));
18. tabHost.addTab(tabHost.newTabSpec("TAB2")
19. .setIndicator("绝对布局").setContent(R.id.layout02));
20. tabHost.addTab(tabHost.newTabSpec("TAB3")
21. .setIndicator("相对布局").setContent(R.id.layout03));
22. }
23. }

第8行代码的声明TabDemo类继承与TabActivity,与以往继承Activity不同,TabActivity支持内嵌多个Activity或View
第12行代码通过getTabHost()函数获得了Tab标签页的容器,用以承载可以点击的Tab标签和分页的界面布局。
第13行代码通过LayoutInflater将tab1.xml文件中的布局转换为Tab标签页可以使用的View对象
第16行代码使用addTab()函数添加了第1个分页,tabHost.newTabSpec("TAB1")表明在第12行代码中建立的tabHost上,添加一个标识为TAB1的Tab分页
第17行代码使用setIndicator()函数设定分页显示的标题,使用setContent()函数设定分页所关联的界面布局

在使用Tab标签页时,可以将不同分页的界面布局保存在不同的XML文件中,也可以将所有分页的布局保存在同一个XML文件中
第一种方法有利于在Eclipse开发环境中进行可视化设计,并且不同分页的界面布局在不同的文件中更加易于管理
第二种方法则可以产生较少的XML文件,同时编码时的代码也会更加简洁

B. Android FragmentTabHost 切换报错,求高手解决。log如下:

这个是因为你在onCreatView()里面,view已经存在,并且有parent了,需要将parent的子view删除就可以了。http://blog.csdn.net/renpengben/article/details/12615487

C. 为什么android tabhost便签切换后旋转动画会回到原来的位置

你没有设置animation的 stayAfter(true); 方法名我记得不大清楚了,。就是XXAfter(true);这样就不会回去了。。

D. android 不用TabActivity 如何实现 tabhost

通过fragment+radiogroup的方式实现。

1、定义布局文件

<LinearLayout
<FrameLayout//定义tab页内容,注意这里layout_weight设为1,占满剩余空间
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"/>
<RadioGroup>//定义tab选项卡
<RadioButton/>
<RadioButton/>
</RadioGroup>
</LinearLayout>

2、定义tab切换事件,显示tab页

java">protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.weibo_tab);//设置布局文件
radioGroup.setOnCheckedChangeListener(newRadioGroup.OnCheckedChangeListener(){//设置tab页切换事件
@Override
publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){
//对应的tab页,显示对应的fragment布局
}
});
}

E. android中fragmenttabhost怎么设置左右滑动

先来看看整个demo的结构:

TabAFm到TabEFm都是Fragment,并且每个Fragment对应一个布局文件。
TabAFm.java:
View Code
如上述代码所示,TabAFm是一个Fragment,对应的布局文件是tab_a.xml,并实现了他的所有的生命周期回调函数并打印,便于调试
tab_a.xml布局中有个EditText
其他的Fragment大同小异,这里就不贴出代码了

现在来看MainActivity:
View Code
MainActivity上述代码所示
MainActivity是包含Fragment的Activity(也就是这里的5个Fragment)
他继承了FragmentActivity(因为我这里用的是android-support-v4.jar)
用一个List<Fragment>去维护5个Fragment,也就是5个tab
main布局中有一个id为tab_content的FrameLayout,用来存放要显示的Fragment。底部有一个RadioGroup,用于tab的切换,如下:
View Code
现在回到MainActivity中,下面这个FragmentTabAdapter类是关键,是我自己编写的用于绑定和处理fragments和RadioGroup之间的逻辑关系
FragmentTabAdapter tabAdapter = new FragmentTabAdapter(this, fragments, R.id.tab_content, rgs);

现在看下FragmentTabAdapter:
View Code
这里解决Fragment切换重新加载布局的办法,用的是把几个Fragment全部Add,然后根据要显示的哪个Fragment设置show或者hide
效果输出:
10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onAttach// 第一次进入,显示TabA
10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onCreate
10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onCreateView
10-10 11:55:41.175: INFO/System.out(18368): AAAAAAAAAA____onActivityCreated
10-10 11:55:41.179: INFO/System.out(18368): AAAAAAAAAA____onStart
10-10 11:55:41.179: INFO/System.out(18368): AAAAAAAAAA____onResume
10-10 11:55:44.980: INFO/System.out(18368): AAAAAAAAAA____onPause// 从TabA切换到TabB(TabA调用onPause)
10-10 11:55:44.980: INFO/System.out(18368): Extra---- 1 checked!!!
10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onAttach
10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onCreate
10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onCreateView
10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onActivityCreated
10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onStart
10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onResume
10-10 11:55:52.062: INFO/System.out(18368): BBBBBBBBBBB____onPause// 从TabB切换到TabC(TabB调用onPause)
10-10 11:55:52.062: INFO/System.out(18368): Extra---- 2 checked!!!
10-10 11:55:52.082: INFO/System.out(18368): CCCCCCCCCC____onAttach
10-10 11:55:52.082: INFO/System.out(18368): CCCCCCCCCC____onCreate
10-10 11:55:52.086: INFO/System.out(18368): CCCCCCCCCC____onCreateView
10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onActivityCreated
10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onStart
10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onResume
10-10 11:56:06.535: INFO/System.out(18368): CCCCCCCCCC____onPause// 从TabC切换到TabB(TabC调用onPause)
10-10 11:56:06.535: INFO/System.out(18368): BBBBBBBBBBB____onResume// 从TabC切换到TabB(TabB调用onResume)
10-10 11:56:06.535: INFO/System.out(18368): Extra---- 1 checked!!!

好了,到此为止,我们已经用Fragment实现了类似TabHost的功能了,下面来看下各个Fragment之间的通信
现在的情况是TabAFm中有个EditText,TabBFm中有个Button,MainActivity中有个变量“hello”
要做的是,切换到TabA,输入“I'm TabA”,切换到B,点击Button后,Toast显示“hello I'm TabA”
MainActivity中没什么好说的,就一个hello变量:
public String hello = "hello ";

TabAFm在布局文件tab_a.xml中加个EditText,设置个id就可以了
TabBFm中:
View Code
// 获得绑定的FragmentActivity
MainActivity activity = ((MainActivity)getActivity());

通过getActivity()即可得到Fragment所在的FragmentActivity

F. Android中想实现多个选项卡的切换,该如何实

Android中使用TabHost和TabWidget来实现选项卡功能。TabHost必须是布局的根节点,它包含两个子节点:
TabWidget,显示选项卡;
FrameLayout,显示标签内容。

实现选项卡功能有两种方法,一种是将多个View放在同一个Activity中,然后使用使用标签来进行切换。另一种是直接使用标签切换不同的Activity。
后一种方法更为常用一些。
1. 创建一个工程,名字可以叫HelloTabWidget。
2. 创建多个不同的Activity,用来表示各个标签页中的不同内容。
3. 为标签设计不同的icon。每个标签应该有两个icon,一个表示选中,一个未选中。将图片放在 res/drawable/文件夹下。然后创建一个相应的
StateListDrawable,用来实现在选中和未选中直接自动的切换。

G. android中的tabHost怎样在点击一个选项卡后跳转到一个activity,点击另一个选项卡跳转到另一个activity

一个Tab页,中间有个按钮可以跳转到另一个Activity

我的TabHost是
intent = new Intent(this,Activity01.class);//新建一个Intent用作Tab1显示的内容
spec = tabHost.newTabSpec("tab1")//新建一个 Tab
.setIndicator("tab1")//设置名称以及图标
.setContent(intent);//设置显示的intent,这里的参数也可以是R.id.xxx
tabHost.addTab(spec);//添加进tabHost
这个方式添加进来的,加载Acitivity01

H. android开发中的tabhost标签,怎么实现点击改变图片。就像微信、微博最下面那一行那样的效果。

使用RadioGroup,里面放置一组RadioButton。然后设置RadioButton的属性。

比如

提一点建议Tabhost已经过时了,现在一般都用fragment和viewpager

I. android tabhost 切换activity时有上一个页面的页面残留

应该不会吧,TabHost自己切换Activity都不用程序员控制Intent,把Activity在Mainfest下注册了就行。可以上图或相关代码看看吗?

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:642
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:368
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:89
php微信接口教程 发布:2025-04-16 17:07:30 浏览:312
android实现阴影 发布:2025-04-16 16:50:08 浏览:795
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:348
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:213
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:819
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:369
土压缩的本质 发布:2025-04-16 16:13:21 浏览:596