Android简单的Fragment嵌套Fragment(Viewpager+Fragement)
来源:互联网 发布:手机版word软件 编辑:程序博客网 时间:2024/06/09 20:52
我的项目目录如下:
直接上核心代码
MainActivity
import android.support.v4.app.FragmentTransaction;
import android.graphics.Color;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.example.fragmentlayout.Fragment.MainFragment;
import com.example.fragmentlayout.Fragment.MineFragment;
import com.example.fragmentlayout.Fragment.MoreFragment;
public class MainActivity extends FragmentActivity implements View.OnClickListener {
private TextView main_textview,more_textview,mine_textview;
private ImageView main_imageview,more_imageview,mine_imageview;
private RelativeLayout main_layout,more_layout,mine_layout;
private Fragment mainFragment,moreFragment,mineFragment;
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE);//删除自带标题栏(如果继承AppCompatActivity,不起效果,所以继承FragmentActivity) setContentView(R.layout.activity_main); initView(); setSelect(0);//显示第一个Fragment (0代表mainFragment,1代表moreFragment,2代表mineFragment);}private void initView() { main_imageview=(ImageView)findViewById(R.id.main_iamgeview); more_imageview=(ImageView)findViewById(R.id.more_iamgeview); mine_imageview=(ImageView)findViewById(R.id.mine_iamgeview); main_textview=(TextView)findViewById(R.id.main_textview); more_textview=(TextView)findViewById(R.id.more_textview); mine_textview=(TextView)findViewById(R.id.mine_textview); main_layout=(RelativeLayout)findViewById(R.id.main_layout); more_layout=(RelativeLayout)findViewById(R.id.more_layout); mine_layout=(RelativeLayout)findViewById(R.id.mine_layout); main_layout.setOnClickListener(this); more_layout.setOnClickListener(this); mine_layout.setOnClickListener(this);}private void setSelect(int i) { FragmentManager fm=getSupportFragmentManager(); FragmentTransaction transaction=fm.beginTransaction(); hideFragment(transaction); switch (i){ case 0: if(mainFragment==null){ mainFragment=new MainFragment(); transaction.add(R.id.fragment,mainFragment); }else { transaction.show(mainFragment); } break; case 1: if(moreFragment==null){ moreFragment=new MoreFragment(); transaction.add(R.id.fragment,moreFragment); }else { transaction.show(moreFragment); } break; case 2: if(mineFragment==null){ mineFragment=new MineFragment(); transaction.add(R.id.fragment,mineFragment); }else { transaction.show(mineFragment); } break; } transaction.commit();//提交事务}private void hideFragment(FragmentTransaction transaction) { if(mainFragment!=null){ transaction.hide(mainFragment); } if(moreFragment!=null){ transaction.hide(moreFragment); } if(mineFragment!=null){ transaction.hide(mineFragment); }}@Overridepublic void onClick(View v) { initImageText(); switch (v.getId()){ case R.id.main_layout: setSelect(0); main_imageview.setImageResource(R.drawable.main2); main_textview.setTextColor(Color.parseColor("#707070")); break; case R.id.more_layout: setSelect(1); more_imageview.setImageResource(R.drawable.more2); more_textview.setTextColor(Color.parseColor("#707070")); break; case R.id.mine_layout: setSelect(2); mine_imageview.setImageResource(R.drawable.my2); mine_textview.setTextColor(Color.parseColor("#707070")); break; }}//初始化图片和文字(未点击自定义的Tab下样式)private void initImageText() { main_imageview.setImageResource(R.drawable.main1); more_imageview.setImageResource(R.drawable.more1); mine_imageview.setImageResource(R.drawable.my1); main_textview.setTextColor(Color.parseColor("#dfdfdf")); more_textview.setTextColor(Color.parseColor("#dfdfdf")); mine_textview.setTextColor(Color.parseColor("#dfdfdf"));}
}
MoreFragment
重点获取Fragmment子管理器用到getChildFragment()
import android.graphics.Color;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.RelativeLayout;import android.widget.TextView;import com.example.fragmentlayout.ChildFragment.OneChild;import com.example.fragmentlayout.ChildFragment.TwoChild;import com.example.fragmentlayout.R;import java.util.ArrayList;import java.util.List;public class MoreFragment extends Fragment implements View.OnClickListener { private ViewPager viewPager; private FragmentPagerAdapter fragmentPagerAdapter; private RelativeLayout one_layout,two_layout; private Fragment oneChildFragment,twoChildFrament; private List<Fragment> mFragmentList; private TextView oneTextView,twoTextView; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view=inflater.inflate(R.layout.more_fragment, container, false); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initView(); setSelect(0);//0代表第一Fragemnt,1代表第二个Fragment } private void initView() { viewPager=(ViewPager)getActivity().findViewById(R.id.viewpager); one_layout=(RelativeLayout)getActivity().findViewById(R.id.one_layout); two_layout=(RelativeLayout)getActivity().findViewById(R.id.two_layout); oneTextView=(TextView)getActivity().findViewById(R.id.one_textView); twoTextView=(TextView)getActivity().findViewById(R.id.two_textView); one_layout.setOnClickListener(this); two_layout.setOnClickListener(this); mFragmentList=new ArrayList<Fragment>(); oneChildFragment=new OneChild(); twoChildFrament=new TwoChild(); mFragmentList.add(oneChildFragment); mFragmentList.add(twoChildFrament); fragmentPagerAdapter=new FragmentPagerAdapter(getChildFragmentManager()) { @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } }; viewPager.setAdapter(fragmentPagerAdapter); viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { setLayout(); switch (position){ case 0: one_layout.setBackgroundColor(Color.parseColor("#ffffff")); oneTextView.setTextColor(Color.parseColor("#000000")); setSelect(0); break; case 1: two_layout.setBackgroundColor(Color.parseColor("#ffffff")); twoTextView.setTextColor(Color.parseColor("#000000")); setSelect(1); break; } } @Override public void onPageScrollStateChanged(int state) { } }); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.one_layout: oneTextView.setTextColor(Color.parseColor("#000000")); setSelect(0); break; case R.id.two_layout: setSelect(1); twoTextView.setTextColor(Color.parseColor("#000000")); break; } } private void setSelect(int i) { switch (i){ case 0: viewPager.setCurrentItem(0); break; case 1: viewPager.setCurrentItem(1); break; } } //初始化Layout和文字 private void setLayout(){ oneTextView.setTextColor(Color.parseColor("#dfdfdf")); twoTextView.setTextColor(Color.parseColor("#dfdfdf")); }}
项目地址:[http://download.csdn.net/download/qq_37238649/10169652
效果图
- Android简单的Fragment嵌套Fragment(Viewpager+Fragement)
- Android_BUG_ViewPager+Fragment(Fragment中嵌套Viewpager,Viewpager中有嵌套Fragement的场景)爆出的BUG
- 简单的Fragment切换,Fragment嵌套Viewpager
- Android ViewPager嵌套Fragment
- Fragment与ViewPager嵌套的简单应用
- ViewPager嵌套fragment简单使用
- Android解决ViewPager嵌套Fragment,Fragment嵌套ViewPager滑动冲突
- Android Fragment嵌套ViewPager,ViewPager嵌套多个Fragment
- Android解决ViewPager嵌套Fragment,Fragment嵌套ViewPager滑动冲突
- Android Fragment嵌套ViewPager,ViewPager嵌套多个Fragment
- Android Fragment嵌套ViewPager,ViewPager嵌套多个Fragment
- viewPager+fragment嵌套viewPager+fragment
- ViewPager+Fragment嵌套ViewPager+Fragment
- android ViewPager学习(五)Fragment里嵌套Viewpager的示例
- fragment嵌套viewpager viewpager嵌套fragment 的bug
- Viewpager + Fragment 的双层嵌套
- Viewpager 嵌套fragment的问题
- Fragment的简单嵌套
- 这些seo技术不掌握不叫专业
- 软件测试计划模板
- 关于公众号wifi强制推送的一些想法
- pyspark 实践汇总2
- centos6安装vim7
- Android简单的Fragment嵌套Fragment(Viewpager+Fragement)
- 优质内容-视频 video
- kafka基础(一)---本人小白,大牛多指教!
- Vivado Synth Faild无error 原因及解决办法
- nginx "proxy_pass" cannot have URI part in location given by regular expression
- 从java的角度解释算法
- 【云计算的1024种玩法】使轻松将服务器文件备份至 OSS
- shader之——自定义shader射线光照烘焙
- git commit -m 'comment' 遇到 'npm' 不是内部或外部命令,也不是可运行的程序 或批处理文件。