登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

查看: 291|回复: 4

详解Android应用中使用TabHost组件进行布局的基本方法

[复制链接]

439

主题

857

帖子

1913

安币

手工艺人

发表于 2018-1-11 15:35:04 | 显示全部楼层 |阅读模式

        tabhost布局文件

        我们先来了解一下布局文件的基本内容:
1. 根标签及id

        设置android自带id : xml布局文件中, 可以使用 标签设置, 其中的id 需要引用 android的自带id :

[Java] 查看源文件 复制代码
android:id=@android:id/tabhost ;

        gethost()获取前提 : 设置了该id之后, 在activity界面可以使用 gethost(), 获取这个tabhost 视图对象;

        示例 :

        复制代码 代码如下:

        <tabhost android:id="@android:id/tabhost" android:layout_height="match_parent" android:layout_width="match_parent"></tabhost>

        2. tabwidget组件

        选项卡切换 : 该组件是选项卡切换按钮, 通过点击该组件可以切换选项卡;

        设置android自带id : 这个组件的id要设置成android的自带id : android:id=@android:id/tabs ;

        tabhost必备组件 : 该组件与framelayout组件是tabhost组件中必备的两个组件;

        切换按钮下方显示 : 如果想要将按钮放到下面, 可以将该组件定义在下面, 但是注意,framelayout要设置android:layout_widget = 1;

        设置tabwidget大小 : 如果想要设置该按钮组件的大小, 可以设置该组件与framelayout组件的权重;

        示例 :

        复制代码 代码如下:

        <tabwidget android:id="@android:id/tabs" android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="horizontal/"></tabwidget>

        3. framelayout组件

        组件作用 : 该组件中定义的子组件是tabhost中每个页面显示的选项卡, 可以将tabhost选项卡显示的视图定义在其中;

        设置android自带id : 这个组件的id要设置成android的自带的id : android:id=@android:id/tabcontent ;

        示例 :

        复制代码 代码如下:

        <framelayout android:id="@android:id/tabcontent" android:layout_height="fill_parent" android:layout_weight="1" android:layout_width="fill_parent"></framelayout>

        示例

        

        上图为最终效果图
代码结构图

        

        main.xml

[Java] 查看源文件 复制代码
<

        java代码如下

[Java] 查看源文件 复制代码
package cn.com.taghost.test; 
 
import android.app.activity; 
import android.os.bundle; 
import android.widget.tabhost; 
import android.widget.tabwidget; 
 
public class taghosttest2 extends activity { 
 @override 
 public void oncreate(bundle savedinstancestate) { 
  super.oncreate(savedinstancestate); 
  setcontentview(r.layout.main); 
  // 获取tabhost对象 
  tabhost tabhost = (tabhost) findviewbyid(r.id.tabhost); 
  // 如果没有继承tabactivity时,通过该种方法加载启动tabhost 
  tabhost.setup(); 
  tabhost.addtab(tabhost.newtabspec("tab1").setindicator("第一个标签", 
    getresources().getdrawable(r.drawable.icon)).setcontent( 
    r.id.view1)); 
 
  tabhost.addtab(tabhost.newtabspec("tab3").setindicator("第三个标签") 
    .setcontent(r.id.view3)); 
 
  tabhost.addtab(tabhost.newtabspec("tab2").setindicator("第二个标签") 
    .setcontent(r.id.view2)); 
 } 
} 

        运行得到正确的结果。
废话连篇:这里需要注意的是
第一:布局文件的格式。以及tabwidget和framelayout的id属性值。
第二:tabwidget代表的是标签部分,framelayout代表的点击标签后看到的内容部分。framelayout里面声明的组件意为具备成为标签内容的资格,具体的还要在代码中具体指定。
你是否也想要这种结果呢。让标签在下部分显示

        

        那么你只需要给main.xml进行下布局修改就可以了。

        main.xml

[Java] 查看源文件 复制代码
<


14

主题

1万

帖子

3912

安币

码皇(巴士元老)

Rank: 8Rank: 8

发表于 2018-1-13 00:51:18 | 显示全部楼层
帮帮顶顶!!

85

主题

9531

帖子

2208

安币

Android大神

Rank: 6Rank: 6

发表于 2018-1-14 03:23:40 | 显示全部楼层
安卓巴士是个不错的网站,我来顶个贴~

0

主题

1万

帖子

2420

安币

Android大神

Rank: 6Rank: 6

发表于 2018-1-14 20:06:03 | 显示全部楼层
感谢大神~

0

主题

9053

帖子

2917

安币

Android大神

Rank: 6Rank: 6

发表于 2018-1-15 08:12:46 | 显示全部楼层
感觉楼主很用心,辛苦啦~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区
联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表