Android水平栏切换fragment
来源:互联网 发布:淘宝阿里旺旺打不开 编辑:程序博客网 时间:2024/05/17 03:12
主要涉及到fragment切换时的bug解决
xml
- 水平栏
<HorizontalScrollView android:id="@+id/hsv_title" android:layout_width="0dp" android:layout_weight="1" android:layout_height="fill_parent" android:scrollbars="none" android:fadingEdge="none" android:overScrollMode="never"> <LinearLayout android:id="@+id/ll_title" android:layout_width="wrap_content" android:layout_height="fill_parent" android:orientation="horizontal" ></LinearLayout> </HorizontalScrollView> <FrameLayout android:id="@+id/tabcontent" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" />
- ChildView——-info
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll_typeitem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:background="@xml/bg_patient_title" android:orientation="horizontal" > <TextView android:id="@+id/tv_type" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:gravity="center" android:ems="4" android:textStyle="bold" /></LinearLayout>
java
/* * TODO 水平栏 */ mhorScroll = (LinearLayout) findViewById(R.id.ll_title); mhorScroll.removeAllViews(); //titleList为自定义的字符串数组 for (int i = 0; i < titleList.length; i++) { View scrollView = layoutInflater.inflate( R.layout.info, null); LinearLayout ll_typeitem = (LinearLayout) scrollView .findViewById(R.id.ll_typeitem); TextView tv_type = (TextView) scrollView.findViewById(R.id.tv_type); tv_type.setText(titleList[i]); if (i == currentTab) { ll_typeitem.setClickable(false); ll_typeitem.setSelected(true); tv_type.setTextColor(this.getResources() .getColor(R.color.white)); } else { ll_typeitem.setClickable(true); ll_typeitem.setSelected(false); tv_type.setTextColor(this.getResources().getColor( R.color.font_hint)); } //利用常量设置监听器 final int num = i; ll_typeitem.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { currentTab = num; changeTabView(); } }); tabViewList.add(new TabView(tv_type, ll_typeitem)); mhorScroll.addView(scrollView); } /* *TabView */ public class TabView { public TextView tv_type; public LinearLayout ll_typeitem; public TabView(TextView tv_type, LinearLayout ll_typeitem) { this.tv_type = tv_type; this.ll_typeitem = ll_typeitem; } } /* * 更换fragment */ public void changeTabColor() { for (int i = 0; i < tabViewList.size(); i++) { if (currentTab == i) { tabViewList.get(i).ll_typeitem.setSelected(true); tabViewList.get(i).ll_typeitem.setClickable(false); tabViewList.get(i).tv_type.setTextColor(this.getResources() .getColor(R.color.white)); } else { tabViewList.get(i).ll_typeitem.setClickable(true); tabViewList.get(i).ll_typeitem.setSelected(false); tabViewList.get(i).tv_type.setTextColor(this.getResources() .getColor(R.color.font_hint)); } } } public void changeTabView() { android.support.v4.app.FragmentManager fm = getSupportFragmentManager(); android.support.v4.app.FragmentTransaction ft = fm.beginTransaction(); //在Manager中找到当前fragment mFregmentSelected = (BaseFragment) fm.findFragmentByTag("Tab" + currentTab); if (mLastTabView != null) { //隐藏上一个fragment ft.hide(mLastTabView); } if (mFregmentSelected != null) { //显示当前的fragment ft.show(mFregmentSelected); } else { switch (currentTab) { case 0: mFregmentSelected = new PageFrag1( testActivity.this); break; case 1: mFregmentSelected = new PageFrag2( testActivity.this); break; case 2: mFregmentSelected = new PageFrag3( testActivity.this); break; case 3: mFregmentSelected = new PageFrag4( testActivity.this); break; case 4: mFregmentSelected = new PageFrag5_ris( testActivity.this); break; case 5: mFregmentSelected = new PageFrag7( testActivity.this); break; case 6: mFregmentSelected = new PageFrag8( testActivity.this); break; default: break; } //替换布局中的framelayout,同时为fragment指定一个Tag ft.add(R.id.tabcontent, mFregmentSelected, "Tab" + currentTab); } mLastTabView = mFregmentSelected; //将fragment加入到退回栈,即按返回键返回上一个fragment ft.addToBackStack(null); //使用commit会报错"IllegalStateException: Can not perform this action after onSaveInstanceState" ft.commitAllowingStateLoss(); }
0 0
- Android水平栏切换fragment
- Android 关于fragment切换
- android 首页fragment切换
- Android Fragment切换动画
- Android切换fragment
- android fragment切换
- Android Fragment切换
- android fragment的切换
- Android Fragment滑动切换
- Android底部Fragment切换
- Android简单Fragment切换
- 【Android】保存Fragment切换状态
- android,横竖屏切换fragment
- android activity fragment状态切换
- Android切换Fragment保持状态
- Android fragment+viewpager 切换Tab
- Android中fragment切换状态
- 【Android】保存Fragment切换状态
- xcode常用的快捷键
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
- 信号发送函数sigqueue和信号安装函数sigaction
- UVALive - 7098 Farey Sums
- mac党如何解析bootchart
- Android水平栏切换fragment
- 查看mysql版本的四种方法
- javascript 获取 range 的html
- Eclipse Java注释模板设置详解
- android view 监听加载完成 获取view的高度
- 每天一张菜谱---粉皮炒鸡蛋
- MySQL (m-s)主从配置文档
- 1.zookeeper原理解析-数据存储之Zookeeper内存结构(zookeeper系列文章)
- [Android] Button 文字被截断解决方案