日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Fragment创建添加切换和对应底部导航(二)

發布時間:2024/7/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Fragment创建添加切换和对应底部导航(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目標:可以滑動Fragment來導航。

原來是通過FragmentManager添加Fragment后,show和hide來顯示和隱藏Fragment。

這里使用Viewpager和FragmentPagerAdapter來實現。

?

把activity_main.xml中的FrameLayout改成ViewPager

<android.support.v4.view.ViewPagerandroid:id="@+id/viewPager"android:layout_weight="1"android:layout_width="match_parent"android:layout_height="0dp"></android.support.v4.view.ViewPager>

全部activity_main.xml文件代碼

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><android.support.v4.view.ViewPagerandroid:id="@+id/viewPager"android:layout_weight="1"android:layout_width="match_parent"android:layout_height="0dp"></android.support.v4.view.ViewPager><LinearLayoutandroid:orientation="vertical"android:layout_width="match_parent"android:layout_height="55dp"><Viewandroid:layout_width="wrap_content"android:layout_height="1dp"android:background="?android:listDivider"/><LinearLayoutandroid:layout_width="match_parent"android:orientation="horizontal"android:background="@android:color/white"android:layout_height="54dp"><LinearLayoutandroid:id="@+id/ll_home"android:layout_width="0dp"android:padding="4dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/iv_home"android:layout_width="28dp"android:layout_height="28dp"android:src="@drawable/bid02"tools:ignore="ContentDescription" /><TextViewandroid:id="@+id/tv_home"android:textColor="@color/home_back_unselected"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="首頁"android:layout_marginTop="2dp"android:textSize="14sp"/></LinearLayout><LinearLayoutandroid:id="@+id/ll_invest"android:layout_width="0dp"android:padding="4dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/iv_invest"android:layout_width="28dp"android:layout_height="28dp"android:src="@drawable/bid04" /><TextViewandroid:id="@+id/tv_invest"android:textColor="@color/home_back_unselected"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="二頁"android:layout_marginTop="2dp"android:textSize="14sp"/></LinearLayout><LinearLayoutandroid:id="@+id/ll_me"android:layout_width="0dp"android:padding="4dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/iv_me"android:layout_width="28dp"android:layout_height="28dp"android:src="@drawable/bid06" /><TextViewandroid:id="@+id/tv_me"android:textColor="@color/home_back_unselected"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="三頁"android:layout_marginTop="2dp"android:textSize="14sp"/></LinearLayout>-<LinearLayoutandroid:id="@+id/ll_more"android:layout_width="0dp"android:padding="4dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/iv_more"android:layout_width="28dp"android:layout_height="28dp"android:src="@drawable/bid08" /><TextViewandroid:id="@+id/tv_more"android:textColor="@color/home_back_unselected"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="四頁"android:layout_marginTop="2dp"android:textSize="14sp"/></LinearLayout></LinearLayout></LinearLayout> </LinearLayout> View Code

?

?

在MainActivity中,獲取ViewPager對象

@BindView(R.id.viewPager)
ViewPager viewPager;

InitFragments函數去掉FragmentManager添加的代碼,使用適配器。

private void InitFragments() {fragments.clear();if (fragmentA == null) {fragmentA = new FragmentA();}if (fragmentB == null) {fragmentB = new FragmentB();}if (fragmentC == null) {fragmentC = new FragmentC();}if (fragmentD == null) {fragmentD = new FragmentD();}fragments.add(fragmentA);fragments.add(fragmentB);fragments.add(fragmentC);fragments.add(fragmentD);TabPageAdapter adapter = new TabPageAdapter(getSupportFragmentManager(), fragments);viewPager.setAdapter(adapter);//滑動響應接口實現viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Overridepublic void onPageSelected(int position) {selectNavigation(position);}@Overridepublic void onPageScrollStateChanged(int state) {}});}

?

適配器類的代碼

class TabPageAdapter extends FragmentPagerAdapter {private List<Fragment> fragments;public TabPageAdapter(FragmentManager fm,List<Fragment> fragments) {super(fm);this.fragments=fragments;}@Overridepublic Fragment getItem(int position) {return fragments.get(position);}@Overridepublic int getCount() {return fragments.size();}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {super.destroyItem(container, position, object);}}

selectNavigaton也需要對切換Fragment,原來顯示和隱藏Fragment,現在不適用了,改成

viewPager.setCurrentItem(page,true);

MainActivity全部代碼

package com.utopia.testfragment;import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView;import java.util.ArrayList; import java.util.List;import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick;public class MainActivity extends FragmentActivity {FragmentA fragmentA;FragmentB fragmentB;FragmentC fragmentC;FragmentD fragmentD;List<Fragment> fragments = new ArrayList<Fragment>();@BindView(R.id.iv_home)ImageView ivHome;@BindView(R.id.tv_home)TextView tvHome;@BindView(R.id.ll_home)LinearLayout llHome;@BindView(R.id.iv_invest)ImageView ivInvest;@BindView(R.id.tv_invest)TextView tvInvest;@BindView(R.id.ll_invest)LinearLayout llInvest;@BindView(R.id.iv_me)ImageView ivMe;@BindView(R.id.tv_me)TextView tvMe;@BindView(R.id.ll_me)LinearLayout llMe;@BindView(R.id.iv_more)ImageView ivMore;@BindView(R.id.tv_more)TextView tvMore;@BindView(R.id.ll_more)LinearLayout llMore;@BindView(R.id.viewPager)ViewPager viewPager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);InitFragments();System.out.println("init DONE....................");selectNavigation(0);}@OnClick({R.id.ll_home, R.id.ll_invest, R.id.ll_me, R.id.ll_more})public void changeTab(View view) {switch (view.getId()) {case R.id.ll_home:selectNavigation(0);break;case R.id.ll_invest:selectNavigation(1);break;case R.id.ll_me:selectNavigation(2);break;case R.id.ll_more:selectNavigation(3);break;}}/**** 初始化:創建Fragment,添加到FrameLayout 中(R.id.content),并且添加到鏈表fragmetns中**/private void InitFragments() {fragments.clear();if (fragmentA == null) {fragmentA = new FragmentA();}if (fragmentB == null) {fragmentB = new FragmentB();}if (fragmentC == null) {fragmentC = new FragmentC();}if (fragmentD == null) {fragmentD = new FragmentD();}fragments.add(fragmentA);fragments.add(fragmentB);fragments.add(fragmentC);fragments.add(fragmentD); // for (Fragment frag : fragments) { // if (!frag.isAdded()) { // getSupportFragmentManager().beginTransaction().add(R.id.content, frag).commit(); // } // }TabPageAdapter adapter = new TabPageAdapter(getSupportFragmentManager(), fragments);viewPager.setAdapter(adapter);//滑動響應接口實現viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Overridepublic void onPageSelected(int position) {selectNavigation(position);}@Overridepublic void onPageScrollStateChanged(int state) {}});}private void showFragment(int frag) {//首先隱藏所有Fragmentsfor (Fragment f : fragments) {getSupportFragmentManager().beginTransaction().hide(f).commit();}//獲取當前 序號的fragmentFragment current_frag = fragments.get(frag);if (current_frag != null) {getSupportFragmentManager().beginTransaction().show(current_frag).commit();}}class TabPageAdapter extends FragmentPagerAdapter {private List<Fragment> fragments;public TabPageAdapter(FragmentManager fm,List<Fragment> fragments) {super(fm);this.fragments=fragments;}@Overridepublic Fragment getItem(int position) {return fragments.get(position);}@Overridepublic int getCount() {return fragments.size();}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {super.destroyItem(container, position, object);}}private void selectNavigation(int page) {//相關圖片,字體變成灰色 ivHome.setImageResource(R.drawable.bid02);ivInvest.setImageResource(R.drawable.bid04);ivMe.setImageResource(R.drawable.bid06);ivMore.setImageResource(R.drawable.bid08);tvHome.setTextColor(getResources().getColor(R.color.home_back_unselected));tvInvest.setTextColor(getResources().getColor(R.color.home_back_unselected));tvMe.setTextColor(getResources().getColor(R.color.home_back_unselected));tvMore.setTextColor(getResources().getColor(R.color.home_back_unselected));switch (page) {case 0:ivHome.setImageResource(R.drawable.bid01);tvHome.setTextColor(getResources().getColor(R.color.home_back_selected_green));break;case 1:ivInvest.setImageResource(R.drawable.bid03);tvInvest.setTextColor(getResources().getColor(R.color.home_back_selected_green));break;case 2:ivMe.setImageResource(R.drawable.bid05);tvMe.setTextColor(getResources().getColor(R.color.home_back_selected_green));break;case 3:ivMore.setImageResource(R.drawable.bid07);tvMore.setTextColor(getResources().getColor(R.color.home_back_selected_green));break;}// 選擇導航的時候,同時選擇Fragment//showFragment(page);viewPager.setCurrentItem(page,true);}} MainActivity代碼

?

轉載于:https://www.cnblogs.com/legion/p/10025533.html

總結

以上是生活随笔為你收集整理的Fragment创建添加切换和对应底部导航(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。