TabHost选项卡的实现(二):使用Fragment实现
在上一篇博客《TabHost选项卡的实现(一):使用TabActivity实现》中,讲解了如何使用TabActivity创建管理选项卡,但是,通过TabActivity创建选项卡的方式已经不再推荐使用,Android3.0之后推出Fragment,并推荐我们使用Fragment来实现标签页。关于Fragment的使用,可以参考我之前的几篇博文:
3. Fragment学习(二): 管理Fragment和Fragment通讯
如果已经对Fragment很了解了,那接下来,我们介绍,如何使用Fragment来实现TabHost,效果图如下:
开发过程:
首先,我们需要定义一个Activity,该Activity管理了社会新闻、生活新闻、娱乐新闻、军事新闻这四个子布局,也就是Fragment。我们先定义该Activity的布局界面:
main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" > <TextView
android:id="@+id/tb1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="社会新闻" /> <TextView
android:id="@+id/tb2"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="生活新闻" /> <TextView
android:id="@+id/tb3"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="娱乐新闻" /> <TextView
android:id="@+id/tb4"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="军事新闻" />
</LinearLayout> <LinearLayout
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout> </LinearLayout>
我们可以看出,程序使用四个TextView代表了效果图上的四个Tab标签页,在实际的开发中,我们可以为该标签做一些效果,使其更加美观,此处介绍不再详细介绍。
在页面布局的下面,我们定义了一个id为content的LinearLayout布局,该布局负责动态替换Fragment的布局。
接下来,我们定义四个Fragment,每个Fragment管理一个子布局,因为Demo里每个Fragment都相似,此处只贴出一个Fragment1.java的代码:
package com.chen.yuan.fragment; import com.chen.yuan.R; import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; public class Fragment1 extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return inflater.inflate(R.layout.fragment1, null);
}
}
该Fragment管理的布局文件为fragment1.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"
android:orientation="vertical"
> <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="社会新闻"
android:textColor="#ff00ff"
android:textSize="20sp"
android:layout_marginTop="20dp"
android:layout_gravity="center_horizontal"
/> </LinearLayout>
四个标签页,对应于四个Fragment,而Fragment应该归于Activity管理,我们使用Fragment动态的管理Fragment:
public class MainActivity extends Activity implements OnClickListener
{
private TextView tv1 = null; private TextView tv2 = null; private TextView tv3 = null; private TextView tv4 = null; private FragmentManager fm = null; private FragmentTransaction ft = null; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); tv1 = (TextView) findViewById(R.id.tb1);
tv2 = (TextView) findViewById(R.id.tb2);
tv3 = (TextView) findViewById(R.id.tb3);
tv4 = (TextView) findViewById(R.id.tb4); tv1.setOnClickListener(this);
tv2.setOnClickListener(this);
tv3.setOnClickListener(this);
tv4.setOnClickListener(this); fm = getFragmentManager();
ft = fm.beginTransaction(); ft.replace(R.id.content, new Fragment1());
ft.commit();
} @Override
public void onClick(View v)
{
ft = fm.beginTransaction();
switch (v.getId())
{
case R.id.tb1: ft.replace(R.id.content, new Fragment1()); break;
case R.id.tb2:
ft.replace(R.id.content, new Fragment2());
break;
case R.id.tb3:
ft.replace(R.id.content, new Fragment3());
break;
case R.id.tb4:
ft.replace(R.id.content, new Fragment4());
break; default:
break;
}
ft.commit();
}
}
代码具体啥意思,我就不再说明了,建议先学会Fragment的基本使用再看该例子,很简单。
代码下载地址免费: http://download.csdn.net/detail/zuiwuyuan/7986609
TabHost选项卡的实现(二):使用Fragment实现的更多相关文章
- 【Android 应用开发】Android - TabHost 选项卡功能用法详解
TabHost效果图 : 源码下载地址 : http://download.csdn.net/detail/han1202012/6845105 . 作者 :万境绝尘 转载请注明出处 ...
- Android - TabHost 选项卡功能用法详解
TabHost效果图 : 源码下载地址 : http://download.csdn.net/detail/han1202012/6845105 . 作者 :万境绝尘 转载请注明出处 ...
- Android ViewPager实现Tabhost选项卡底部滑块动态滑动过渡
<Android ViewPager实现Tabhost选项卡底部滑块动态滑动过渡> 之前基于github上的第三方开源控件ViewPagerIndicator的UnderlinePa ...
- Android系列之Fragment(二)----Fragment的生命周期和返回栈
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- 【转】【Android UI设计与开发】第07期:底部菜单栏(二)Fragment的详细介绍和使用方法
原始地址:http://blog.csdn.net/yangyu20121224/article/category/1431917/1 由于TabActivity在Android4.0以后已经被完全弃 ...
- fragment做成选项卡,tab效果。 fragment+RadioGroup
fragment做成选项卡,tab效果. fragment+RadioGroup from://http://blog.csdn.net/zimo2013/article/details/122393 ...
- TabHost选项卡的实现(一):使用TabActivity实现
一. TabHost的基本开发流程 TabHost是一种非常实用的组件,可以很方便的在窗口上防止多个标签页,每个标签页相当于获得了一个外部容器相同大小的组件摆放区域. 我们熟悉的手机电话系统" ...
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
以下内容为原创,转载请注明:http://www.cnblogs.com/tiantianbyconan/p/3360938.html 如新浪微博下面的标签切换功能,我以前也写过一篇博文(http:/ ...
- android学习--TabHost选项卡组件
TabHost是一种非常有用的组件,TabHost能够非常方便地在窗体上放置多个标签页,每一个标签页获得了一个与外部容器同样大小的组件摆放区域.在手机系统的应用类似"未接电话".& ...
随机推荐
- httpserver支持路由传输控制器
main.go package main import ( "net/http" "com.jtthink.net/myhttpserver/core" ) t ...
- 获得CSM(Certified Scrum Master)-价值驱动交付。
2019年越来越多的企业开始实行敏捷转型,紧随时代潮流,学习最先进的科学管理方法,找到正确的人(团队),为企业交付高价值的产品服务. 导师Ethan ,培训的课程让人收益匪浅,活到老学到老,丰富的知识 ...
- oracle-Normal
从shutdown normal命令发布起, 禁止建立任何新的oracle连接. 数据库将等到所有用户都被断开后再继续关闭过程. 等待当前所有已连接的用户断开与数据库的连接
- PHP学习(类型转化)
PHP 在变量定义中不需要(或不支持)明确的类型定义:变量类型是根据使用该变量的上下文所决定的.也就是说,如果把一个 string 值赋给变量 $var , $var 就成了一个 string .如果 ...
- 【JZOJ4772】【NOIP2016提高A组模拟9.9】运输妹子
题目描述 小轩轩是一位非同一般的的大农(lao)场(si)主(ji),他有一大片非同一般的农田,并且坐落在一条公路旁(可以认为是数轴),在他的农田里种的东西也非同一般--不是什么水稻小麦,而是妹子. ...
- 如何在“代码”视图中工作并充分利用 Dreamweaver 的编码功能。如 Emmet 缩写
可通过多种方式在 Dreamweaver 中处理代码. 您可以使用“新建文档”对话框打开新的代码文件,然后开始键入您的代码. 在 Dreamweaver 中创建新的代码文件 键入时,会显示代码提示以帮 ...
- 【JZOJ4882】【NOIP2016提高A组集训第12场11.10】多段线性函数
题目描述 数据范围 解法 三分找出极值,两个二分找出极值的范围. 代码 #include<iostream> #include<stdio.h> #include<str ...
- Oracle TRIM函数语法介绍
Oracle中trim的完整参数TRIM([ { { LEADING | TRAILING | BOTH } [ trim_character ] | trim_character } F ...
- HDU_1061:Rightmost Digit
Problem Description Given a positive integer N, you should output the most right digit of N^N. Inp ...
- 【git基本操作】总结
"git fetch GitLab: Your account has been blocked.fatal: Could not read from remote repository. ...