效果:
1、布局:使用LinearLayout布置标签;再使用FrameLayout来布置Fragment。
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="36dp"
android:orientation="horizontal"
android:weightSum="3">
android:id="@+id/tab1_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/tab_down"
android:gravity="center">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选项卡一"
android:textColor="#ffffff"/>
android:layout_width="2dp"
android:layout_height="match_parent"
android:background="#ffffff"/>
android:id="@+id/tab2_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/tab"
android:gravity="center">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选项卡二"
android:textColor="#ffffff"/>
android:layout_width="2dp"
android:layout_height="match_parent"
android:background="#ffffff"/>
android:id="@+id/tab3_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/tab"
android:gravity="center">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选项卡"
android:textColor="#ffffff"/>
android:id="@+id/content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
fragment_fragmentmanager.xml
1、方法replaceFragment()实现切换Fragment的功能:通过FragmentTransaction的replace方法来替换FrameLayout中的Fragment。
2、改变标签的背景色,来区分选中的Tab与其他Tab。
public class FragmentAndFManagerActivity extends FragmentActivity
implements View.OnClickListener {
private static final String LOG_TAG = FragmentAndFManagerActivity.class.getSimpleName();
// 三个选项卡
private LinearLayout tab1Layout, tab2Layout, tab3Layout;
// 默认选中第一个
private int index = 1;
// fragment管理类
private FragmentManager fragmentManager;
// 三个fragment
private Fragment tab1Fragment, tab2Fragment, tab3Fragment;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_fragmentmanager);
fragmentManager = getSupportFragmentManager();
init();
}
/**
* 初始化控件
*/
private void init(){
tab1Layout = (LinearLayout) findViewById(R.id.tab1_layout);
tab2Layout = (LinearLayout) findViewById(R.id.tab2_layout);
tab3Layout = (LinearLayout) findViewById(R.id.tab3_layout);
tab1Layout.setOnClickListener(this);
tab2Layout.setOnClickListener(this);
tab3Layout.setOnClickListener(this);
setDefaultFragment();
}
/**
* 设置默认显示的fragment
*/
private void setDefaultFragment(){
FragmentTransaction transaction = fragmentManager.beginTransaction();
tab1Fragment = new FragmentAndFManager_Fragment1();
transaction.replace(R.id.content_layout, tab1Fragment);
transaction.commit();
}
/**
* 切换fragment
* @param newFragment
*/
private void replaceFragment(Fragment newFragment){
FragmentTransaction transaction = fragmentManager.beginTransaction();
if(!newFragment.isAdded()) {
Log.d(LOG_TAG, "In replaceFragment -- replace");
transaction.replace(R.id.content_layout, newFragment);
transaction.commit();
}else{
Log.d(LOG_TAG, "In replaceFragment -- show");
transaction.show(newFragment);
}
}
/**
* 改变选项卡的选中状态
*/
private void clearStatus(){
if(index == 1){
tab1Layout.setBackgroundColor(getResources().getColor(R.color.tab));
}else if(index == 2){
tab2Layout.setBackgroundColor(getResources().getColor(R.color.tab));
}else if(index == 3){
tab3Layout.setBackgroundColor(getResources().getColor(R.color.tab));
}
}
@Override
public void onClick(View v) {
clearStatus();
switch(v.getId()){
case R.id.tab1_layout:
if(tab1Fragment == null){
tab1Fragment = new FragmentAndFManager_Fragment1();
}
replaceFragment(tab1Fragment);
tab1Layout.setBackgroundColor(getResources().getColor(R.color.tab_down));
index = 1;
break;
case R.id.tab2_layout:
if(tab2Fragment == null){
tab2Fragment = new FragmentAndFManager_Fragment2();
}
replaceFragment(tab2Fragment);
tab2Layout.setBackgroundColor(getResources().getColor(R.color.tab_down));
index = 2;
break;
case R.id.tab3_layout:
if(tab3Fragment == null){
tab3Fragment = new FragmentAndFManager_Fragment3();
}
replaceFragment(tab3Fragment);
tab3Layout.setBackgroundColor(getResources().getColor(R.color.tab_down));
index = 3;
break;
}
}
}
FragmentAndFManagerActivity.java
android Tab 类型切换界面
实现方案:viewpager + fragment + FragmentPagerAdapter 效果图: 可以左右滑动切换选项卡,或者点击: 如果想使用fragment的时候又想可以左右滑动,就可以 ...
android Tab =viewpager+fragmnet
1.定义几个fragment 的subclass 如fragmentone,fragmenttwo; public class fragmentthree extends Fragment { pri ...
仿百度壁纸客户端(一)——主框架搭建,自定义Tab+ViewPager+Fragment
仿百度壁纸客户端(一)--主框架搭建,自定义Tab+ViewPager+Fragment 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment ...
Android开发学习—— Fragment
#Fragment* 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容* 生命周期方法跟Activity一致,可以理解把其为就是一个Activity* 定义布局文件作 ...
[Android] 多重使用Fragment 中的onFragmentInteraction
新建的一个Fragment,被一个Activity使用,那么这个Activity需要继承一个接口: public class MainActivity extends Activity impleme ...
Android 动态创建Fragment
Fragment是activity的界面中的一部分或一种行为.可以把多个Fragment组合到一个activity中来创建一个多界面并且可以在多个activity中重用一个Fragment.可以把Fr ...
Android碎片(Fragment)简述
碎片(Fragment)是一种可以嵌入活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因此碎片在平板上的应用非常广泛. 你可以将碎片理解成一个迷你型的活动,水平同样可能包含布局,同样都 ...
Android系列之Fragment(四)----ListFragment的使用
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
随机推荐
关于css清除浮动,解决内容溢出的问题
以前在布局的时候总会遇到这样的问题,比如我想让整体的内容居中,所以会这样写, .main-content{ width:960px:height:300px;margin:0px auto; } 然后 ...
使用EntityFramwork[6.1]进行级联保存的时候出现异常
出现的异常:System.InvalidOperationException: Multiplicity constraint violated. The role 'IncomeItem_Creat ...
使用MediaPlayer播放音频-----之二
MediaPlayer播放不同来源的音频文件: 一.播放应用的资源文件 1.调用MediaPlayer的create(Context context , int resid)方法加载指定资源文件. ...
Centos6.4 为用户添加sudo功能
sudo即super user do,以超级管理员的方式运行命令.使用时,只需在命令最前面加上sudo即可. 要为用户添加sudo功能,需要修改sudo的配置文件: vi /etc/sudoers ( ...
查看Linux声卡基本信息[转载]
查看系统版本~$ uname -aLinux laptop 2.6.27-7-generic #1 SMP Tue Nov 4 19:33:20 UTC 2008 i686 GNU/Linux 查看型 ...
Jetty:开发指导Handlers
Rewrite Handler RewriteHandler匹配一个基于该请求的规则集合,然后根据匹配规则的变更请求. 最常见的要求是改写URI.但不限于:规则可以被配置为重定向响应.设置cookie ...
Android 基于Netty接收和发送推送解决方案的消息字符串(三)
在上一篇文章中 .我们介绍过一些关于Netty的概念和工作原理的内容,今天我们先来介绍一个叫做ChannelBuffe ...
JAVA NIO之文件通道
1.简介 通道是 Java NIO 的核心内容之一,在使用上,通道需和缓存类(ByteBuffer)配合完成读写等操作.与传统的流式 IO 中数据单向流动不同,通道中的数据可以双向流动.通道既可以读, ...
DS控件库 在Combobox中嵌入远程桌面
本示例演示DS开放式下拉列表控件中加入一个RDP远程桌面控件. 先在VS工具箱中添加COM控件Microsoft RDP Client Control,后面的Version版本可以适当高点. 然后将R ...
jQuery - 链(Chaining)
http://www.runoob.com/jquery/jquery-chaining.html jQuery - 链(Chaining) 通过 jQuery,可以把动作/方法链接在一起. Chai ...