文档章节

Android UI-实现底部切换标签(fragment)

7
 761218914
发布于 2015/10/16 11:19
字数 430
阅读 565
收藏 1

http://blog.csdn.net/wwj_748/article/details/44224945

http://download.csdn.net/detail/wwj_748/8495621#comment源代码

public class MainActivity extends FragmentActivity implements OnClickListener {
 // 三个tab布局
 private RelativeLayout knowLayout, iWantKnowLayout, meLayout;
 // 底部标签切换的Fragment
 private Fragment knowFragment, iWantKnowFragment, meFragment,
   currentFragment;
 // 底部标签图片
 private ImageView knowImg, iWantKnowImg, meImg;
 // 底部标签的文本
 private TextView knowTv, iWantKnowTv, meTv;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  initUI();
  initTab();
 }
 /**
  * 初始化UI
  */
 private void initUI() {
  knowLayout = (RelativeLayout) findViewById(R.id.rl_know);
  iWantKnowLayout = (RelativeLayout) findViewById(R.id.rl_want_know);
  meLayout = (RelativeLayout) findViewById(R.id.rl_me);
  knowLayout.setOnClickListener(this);
  iWantKnowLayout.setOnClickListener(this);
  meLayout.setOnClickListener(this);
  knowImg = (ImageView) findViewById(R.id.iv_know);
  iWantKnowImg = (ImageView) findViewById(R.id.iv_i_want_know);
  meImg = (ImageView) findViewById(R.id.iv_me);
  knowTv = (TextView) findViewById(R.id.tv_know);
  iWantKnowTv = (TextView) findViewById(R.id.tv_i_want_know);
  meTv = (TextView) findViewById(R.id.tv_me);
 }
 /**
  * 初始化底部标签
  */
 private void initTab() {
  if (knowFragment == null) {
   knowFragment = new ZhidaoFragment();
  }
  if (!knowFragment.isAdded()) {
   // 提交事务
   getSupportFragmentManager().beginTransaction()
     .add(R.id.content_layout, knowFragment).commit();
   // 记录当前Fragment
   currentFragment = knowFragment;
   // 设置图片文本的变化
   knowImg.setImageResource(R.drawable.btn_know_pre);
   knowTv.setTextColor(getResources()
     .getColor(R.color.bottomtab_press));
   iWantKnowImg.setImageResource(R.drawable.btn_wantknow_nor);
   iWantKnowTv.setTextColor(getResources().getColor(
     R.color.bottomtab_normal));
   meImg.setImageResource(R.drawable.btn_my_nor);
   meTv.setTextColor(getResources().getColor(R.color.bottomtab_normal));
  }
 }
 @Override
 public void onClick(View view) {
  switch (view.getId()) {
  case R.id.rl_know: // 知道
   clickTab1Layout();
   break;
  case R.id.rl_want_know: // 我想知道
   clickTab2Layout();
   break;
  case R.id.rl_me: // 我的
   clickTab3Layout();
   break;
  default:
   break;
  }
 }
 /**
  * 点击第一个tab
  */
 private void clickTab1Layout() {
  if (knowFragment == null) {
   knowFragment = new ZhidaoFragment();
  }
  addOrShowFragment(getSupportFragmentManager().beginTransaction(), knowFragment);
  
  // 设置底部tab变化
  knowImg.setImageResource(R.drawable.btn_know_pre);
  knowTv.setTextColor(getResources().getColor(R.color.bottomtab_press));
  iWantKnowImg.setImageResource(R.drawable.btn_wantknow_nor);
  iWantKnowTv.setTextColor(getResources().getColor(
    R.color.bottomtab_normal));
  meImg.setImageResource(R.drawable.btn_my_nor);
  meTv.setTextColor(getResources().getColor(R.color.bottomtab_normal));
 }
 /**
  * 点击第二个tab
  */
 private void clickTab2Layout() {
  if (iWantKnowFragment == null) {
   iWantKnowFragment = new IWantKnowFragment();
  }
  addOrShowFragment(getSupportFragmentManager().beginTransaction(), iWantKnowFragment);
  
  knowImg.setImageResource(R.drawable.btn_know_nor);
  knowTv.setTextColor(getResources().getColor(R.color.bottomtab_normal));
  iWantKnowImg.setImageResource(R.drawable.btn_wantknow_pre);
  iWantKnowTv.setTextColor(getResources().getColor(
    R.color.bottomtab_press));
  meImg.setImageResource(R.drawable.btn_my_nor);
  meTv.setTextColor(getResources().getColor(R.color.bottomtab_normal));
 }
 /**
  * 点击第三个tab
  */
 private void clickTab3Layout() {
  if (meFragment == null) {
   meFragment = new MeFragment();
  }
  
  addOrShowFragment(getSupportFragmentManager().beginTransaction(), meFragment);
  knowImg.setImageResource(R.drawable.btn_know_nor);
  knowTv.setTextColor(getResources().getColor(R.color.bottomtab_normal));
  iWantKnowImg.setImageResource(R.drawable.btn_wantknow_nor);
  iWantKnowTv.setTextColor(getResources().getColor(
    R.color.bottomtab_normal));
  meImg.setImageResource(R.drawable.btn_my_pre);
  meTv.setTextColor(getResources().getColor(R.color.bottomtab_press));
  
 }
 /**
  * 添加或者显示碎片
  * 
  * @param transaction
  * @param fragment
  */
 private void addOrShowFragment(FragmentTransaction transaction,
   Fragment fragment) {
  if (currentFragment == fragment)
   return;
  if (!fragment.isAdded()) { // 如果当前fragment未被添加,则添加到Fragment管理器中
   transaction.hide(currentFragment)
     .add(R.id.content_layout, fragment).commit();
  } else {
   transaction.hide(currentFragment).show(fragment).commit();
  }
  currentFragment = fragment;
 }
}

本文转载自:http://blog.csdn.net/wwj_748/article/details/44224945

7
粉丝 5
博文 133
码字总数 47263
作品 0
南昌
程序员
私信 提问
Android交流会-碎片Fragment,闲聊单位与尺寸

女孩:又周末了哦~ 男孩:那么今日来开个交流会,我们也学一学人家高大尚的大会,自己开一个,广州站,Android开发攻城狮交流会~ 1.Fragment概要: Android从3.0开始引入了Fragment的概念,中...

达叔小生
2018/07/28
0
0
android 开发积累-fragment卡死

Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组...

veblen_pong
2015/04/29
948
0
仿安智市场UI框架布局之fragment+tabhost底部菜单

第一部分就是你们现在看的这个贴,主要功能:实现fragment_+tabhost来搭建整个app的大体UI框架,底部是一个可切换的选项卡(安智市场中的底部选项卡的切换动画效果略过,没写,太困了,码完字...

chengche
2013/12/06
3.5K
5
底部滑动导航

先来看看我们想实现的效果图: 这样的页面实现起来其实很简单的,首先我们从布局入手: 1:顶部导航栏布局 2:中部显示内容布局 3:底部标签布局 /res/layout/activity_main.xml 以上是布局代...

ldfowjemr
2016/01/10
45
0
Fragment 的使用(1)

基本:http://www.cnblogs.com/mengdd/archive/2013/01/08/2851368.html 深入:http://blog.csdn.net/pi9nc/article/details/12249619 Fragment  Android是在Android 3.0 (API level 11)开始......

chuiyuan
2014/07/23
59
0

没有更多内容

加载失败,请刷新页面

加载更多

EDI 电子数据交换全解指南

EDI(Electronic Data Interchange,电子数据交换)技术使得企业与企业(B2B)实现通信自动化,帮助交易伙伴和组织更快更好地完成更多工作,并消除了人工操作带来的错误。从零售商到制造商、物...

EDI知行软件
今天
3
0
CentOS7的LVM动态扩容

# 问题 CentOS7上面的磁盘空间有点紧张,需要扩容。 解决 查询当前磁盘状态 [root@xxx ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTfd0 2:0 1 4K ...

亚林瓜子
今天
5
0
Kafka 0.8 Producer (0.9以前版本适用)

Kafka旧版本producer由scala编写,0.9以后已经废除 示例代码如下: import kafka.producer.KeyedMessage;import kafka.javaapi.producer.Producer;import kafka.producer.ProducerConfig;......

实时计算
今天
5
0
Giraph源码分析(八)—— 统计每个SuperStep中参与计算的顶点数目

作者|白松 目的:科研中,需要分析在每次迭代过程中参与计算的顶点数目,来进一步优化系统。比如,在SSSP的compute()方法最后一行,都会把当前顶点voteToHalt,即变为InActive状态。所以每次...

数澜科技
今天
6
0
Navicat 快捷键

操作 结果 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+l 删除一行 ...

低至一折起
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部