android ViewPager 与Fragment

Posted newlangwen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android ViewPager 与Fragment相关的知识,希望对你有一定的参考价值。

 

ViewPager

 左右滑动数据显示

1. 整体布局

  FragmentLayout 容器包裹Fragment

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="demo.yuchen.com.ex04_extras.MainActivity">

    <!--<fragment-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content"-->
        <!--android:name="demo.yuchen.com.ex04_extras.MyFragment"-->
        <!--android:id="@+id/fragment"-->
        <!--android:layout_alignParentTop="true"-->
        <!--android:layout_centerHorizontal="true"-->
        <!--android:layout_marginTop="136dp" />-->

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Large Text"
        android:id="@+id/textView2"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="添加Fragment"
        android:id="@+id/btnAdd"
        android:onClick="btnAdd"
        android:layout_below="@+id/textView2"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/btnAdd"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="80dp"
        android:id="@+id/container"></FrameLayout>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="替换"
        android:id="@+id/btnReplace"
        android:onClick="btnReplace"
        android:layout_below="@+id/btnAdd"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>
View Code

 

2.Fragment内容替换

public class MainActivity extends FragmentActivity {
    public void btnAdd(View view) {
        getSupportFragmentManager().beginTransaction()
            .add(R.id.container, new MyFragment()).commit();
    }
    public void btnReplace(View view) {
        getSupportFragmentManager().beginTransaction()
            .replace(R.id.container, new ViewPagerFragment()).commit();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

2. ViewPagerFragment

  



/**
* A simple {@link Fragment} subclass.
*/
public class ViewPagerFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View layout = inflater.inflate(R.layout.fragment_blank, container, false);
ViewPager viewPager = (ViewPager) layout.findViewById(R.id.pager);
viewPager.setAdapter(new MyPagerAdapter(getChildFragmentManager()));
return layout;
}

class MyPagerAdapter extends FragmentPagerAdapter{

List<Fragment> fragmentList = new ArrayList<>();
public MyPagerAdapter(FragmentManager fm) {
super(fm);
fragmentList.add(new PagerItemFragment());
}

@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}

@Override
public int getCount() {
return fragmentList.size();
}

}
}
 

 3. fragment_blank.xml

   

<FrameLayout 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"
    tools:context=".ViewPagerFragment">

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</FrameLayout>

 4. 

public class PagerItemFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_pager_item, container, false);
    }


}

 

以上是关于android ViewPager 与Fragment的主要内容,如果未能解决你的问题,请参考以下文章

Fragment状态改变与管理

Fragment常见问题

Fragment常见问题

Fragment常见问题

FragmentViewPager中使用Fragment

FragmentViewPager中使用Fragment