ViewPager巢狀fragment簡單使用
最近在公司沒有什麼新的開發任務,就複習一下以前的知識,Android大多數應用都是ViewPager+fragment實現主頁面的框架結構,今天就簡單的介紹一下ViewPager和fragment的簡單使用。
首先看一下activity的佈局:
- 1
- 2
- 3
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="ledon.com.servicedemo.ViewPagerActivity">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</android.support.v4.view.ViewPager>
</RelativeLayout>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
在佈局檔案中新增ViewPager的控制元件,這裡需要說明一下ViewPager要在v4包裡引用,並且在ViewPager需要用到介面卡,一般情況下單獨使用ViewPager的時候我們使用pagerAdapter,這裡我們要使用fragment的時候,我們就需要使用FagmentPagerAdapter,這裡說一下FragmentPagerAdapter繼承PagerAdapter。
- 1
- 2
下面看看Adapter適配的使用:
package ledon.com.servicedemo.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;
/**
* Created by Administrator on 2017/3/30.
*/
public class FragmentAdapter extends FragmentPagerAdapter {
//存放fragment的集合
private List<Fragment> mFragments;
public FragmentAdapter(FragmentManager fm, List<Fragment> mFragments) {
super(fm);
this.mFragments = mFragments;
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
FragmentManager 頁面管理器,使用這個管理器的時候一定要注意,如果你匯入的是支援v4的,以後用到的都要是v4相容的,不然會出現問題。
接下來建立三個fragment:OneFragment,TwoFragment,ThreeFagment的原始碼;
在這裡xml檔案和Java檔案都差不多,我們只需要貼上一個就可以:
xml檔案:
- 1
- 2
- 3
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff0"
android:orientation="vertical">
<TextView
android:text="我是第一個fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
java檔案:
package ledon.com.servicedemo.fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import ledon.com.servicedemo.R;
/**
* Created by Administrator on 2017/3/30.
*/
public class OneFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_one, container, false);
return view;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
最後看看我們是怎麼讓ViewPager巢狀fragment動起來的:
package ledon.com.servicedemo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import java.util.ArrayList;
import java.util.List;
import butterknife.ButterKnife;
import butterknife.InjectView;
import ledon.com.servicedemo.adapter.FragmentAdapter;
import ledon.com.servicedemo.fragment.OneFragment;
import ledon.com.servicedemo.fragment.ThreeFragment;
import ledon.com.servicedemo.fragment.TwoFragment;
public class ViewPagerActivity extends AppCompatActivity {
@InjectView(R.id.viewpager)
ViewPager viewpager;
@InjectView(R.id.activity_view_pager)
RelativeLayout activityViewPager;
private View one;
private View two;
private View three;
private List<Fragment> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pager);
ButterKnife.inject(this);
initData();
}
/**
* 初始化資料
*/
private void initData() {
//建一個存放fragment的集合,並且把新的fragment放到集合中
list = new ArrayList<Fragment>();
list.add(new OneFragment());
list.add(new TwoFragment());
list.add(new ThreeFragment());
//初始化adapter
FragmentAdapter adapter = new FragmentAdapter(getSupportFragmentManager(), list);
//將介面卡和ViewPager結合
viewpager.setAdapter(adapter);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
效果圖:
相關文章
- 【Android Fragment】解決ViewPager巢狀時Fragment的mUserVisibleHint屬性不同步的問題AndroidFragmentViewpager巢狀
- Android使用(TabLayout+ViewPager+fragment)與(FragmentTabHost+ViewPager+Fragment)實現底部狀態列切換AndroidTabLayoutViewpagerFragment
- Fragment巢狀FragmentViewPager 正常使用姿勢Fragment巢狀Viewpager
- 【BUG系列】Fragment中巢狀Fragment,不顯示Fragment巢狀
- Android實現雙層ViewPager巢狀AndroidViewpager巢狀
- C++ 巢狀類簡單測試C++巢狀
- 對比SQL中簡單巢狀查詢與非巢狀查詢CFSQL巢狀
- Android 在 ViewPager 中使用 Fragment 的懶載入AndroidViewpagerFragment
- Android中Fragment巢狀Fragment,切換Fragment時不顯示檢視的原因及解決方法AndroidFragment巢狀
- 多層巢狀後的 Fragment 懶載入實現巢狀Fragment
- Android ViewPager2 + Fragment 聯動AndroidViewpagerFragment
- 最佳化兩個簡單的巢狀迴圈巢狀
- Android ViewPager2 + Fragment + BottomNavigationView 聯動AndroidViewpagerFragmentNavigation
- 【Android ViewPager】解決ViewPager巢狀時在API 13及其以下版本中不能滑動的問題AndroidViewpager巢狀API
- element-ui的----el-form表單校驗巢狀表單校驗(表單多層巢狀)+el-table和el-form巢狀使用表單校驗UIORM巢狀
- 【Android Fragment】解決Fragment多層巢狀時onActivityResult無法正確回撥的問題AndroidFragment巢狀
- ViewPager、Fragment和TabLayout實現切頁效果ViewpagerFragmentTabLayout
- TabLayout+ViewPager+Fragment實現切頁展示TabLayoutViewpagerFragment
- Tablayout+Viewpager+Fragment組合使用以及懶載入機制TabLayoutViewpagerFragment
- Vue案例引發的「巢狀元件」通訊的簡單方式Vue巢狀元件
- Android tabLayout+viewPager+fragment處理懶載入AndroidTabLayoutViewpagerFragment
- ToolBar、TabLayout、Fragment+ViewPager的開發實踐TabLayoutFragmentViewpager
- 利用ViewPager和Fragment實現頁卡切換ViewpagerFragment
- ViewPager最簡單的無限輪播Viewpager
- 5-AVI–Fragment簡單封裝Fragment封裝
- javafx和swing巢狀使用的方法Java巢狀
- TabLayout + ViewPager +Fragment 實現頁面的動態重新整理TabLayoutViewpagerFragment
- 安卓開發:viewpager + fragment 實現滑動切換安卓ViewpagerFragment
- 解決viewpager+fragment+tablayout的動態重新整理ViewpagerFragmentTabLayout
- vue elementUI 表單校驗(多層巢狀)VueUI巢狀
- 安卓之viewPager簡單用法圖片輪播安卓Viewpager
- TabLayout+ViewPager+Fragment實現懶載入完全解決方案TabLayoutViewpagerFragment
- iOS block巢狀block中weakify的使用iOSBloC巢狀
- 使用swiper.js建立巢狀的swiperJS巢狀
- Angular 裡使用巢狀 Form 的步驟Angular巢狀ORM
- es中如何使用巢狀物件查詢巢狀物件
- 列表巢狀操作巢狀
- vue路由巢狀Vue路由巢狀