Android中fragment+viewpager实现布局

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下

1.先布局实现mian.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bwei.fragment.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioGroup android:id="@+id/radioGroup1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignBottom="@+id/pager" android:layout_centerHorizontal="true" android:orientation="horizontal" android:background="#ccc" > <RadioButton android:id="@+id/radio0" android:layout_width="0dp" android:layout_height="match_parent" android:checked="true" android:button="@null" android:layout_weight="1" android:text="微信" android:drawableTop="@mipmap/ic_launcher_round" android:gravity="center" /> <RadioButton android:id="@+id/radio1" android:layout_width="0dp" android:layout_height="match_parent" android:button="@null" android:layout_weight="1" android:text="通讯录" android:drawableTop="@mipmap/ic_launcher_round" android:gravity="center" /> <RadioButton android:id="@+id/radio2" android:layout_width="0dp" android:layout_height="match_parent" android:button="@null" android:layout_weight="1" android:text="发现" android:drawableTop="@mipmap/ic_launcher_round" android:gravity="center" /> <RadioButton android:id="@+id/radio3" android:layout_width="0dp" android:layout_height="wrap_content" android:button="@null" android:layout_weight="1" android:text="我的" android:drawableTop="@mipmap/ic_launcher_round" android:gravity="center"/> </RadioGroup> </RelativeLayout>

2.创建3个fragment 要继承Fragment类v4包下的

public class FragmentThree extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { //引入布局文件 View view = inflater.inflate(R.layout.fragmentthree, null); return view; } }

3.创建fragment 相对应的布局文件

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="230dp" android:text="one" /> </RelativeLayout>

4.创建适配器继承FragmentPagerAdapter

package com.bwei.fragment; import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.List; public class MyAdapter extends FragmentPagerAdapter { private List<Fragment> fragments; private Context context; //构造方法 public MyAdapter(FragmentManager fm, List<Fragment> fragments, Context context) { super(fm); this.fragments = fragments; this.context = context; } //得到item条目 @Override public Fragment getItem(int position) { return fragments.get(position); } //得到数量 @Override public int getCount() { return fragments.size(); } }

5.在mainActivity实现效果

package com.bwei.fragment; import android.graphics.Color; import android.os.Bundle; import android.support.annotation.IdRes; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener,ViewPager.OnPageChangeListener { private ViewPager vPager; private List<Fragment> fragments; private FragmentManager fm; private RadioGroup mRadioGroup; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 initView(); initDate(); } private void initView() { vPager=(ViewPager) findViewById(R.id.pager); vPager.setOnPageChangeListener(this); mRadioGroup=(RadioGroup) findViewById(R.id.radioGroup1); mRadioGroup.setOnCheckedChangeListener(this); } private void initDate() { fragments=new ArrayList<Fragment>(); //实例化Fragment FragmentOne fragmentOne = new FragmentOne(); FragmentTwo fragmentTwo = new FragmentTwo(); FragmentThree fragmentThree = new FragmentThree(); //添加到集合 fragments.add(fragmentOne); fragments.add(fragmentTwo); fragments.add(fragmentThree); //得到getSupportFragmentManager()的管理器 fm = getSupportFragmentManager(); //得到适配器 MyAdapter myAdapter = new MyAdapter(fm, fragments, this); //设置适配器 vPager.setAdapter(myAdapter); } //ViewPager.OnPageChangeListener监听事件 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i = 0; i <fragments.size() ; i++) { RadioButton radiobutton = (RadioButton) mRadioGroup.getChildAt(i); if (i==position) { radiobutton.setChecked(true); //设置选中的颜色 radiobutton.setBackgroundColor(Color.RED); }else { radiobutton.setChecked(false); radiobutton.setBackgroundColor(Color.BLACK); radiobutton.setBackgroundColor(Color.BLACK); } } } @Override public void onPageScrollStateChanged(int state) { } //RadioGroup的监听事件 @Override public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { for (int j = 0; j <fragments.size() ; j++) { //得到radiobutton RadioButton radiobutton = (RadioButton) mRadioGroup.getChildAt(j); int id = radiobutton.getId(); Toast.makeText(this,id+"", Toast.LENGTH_SHORT).show(); //判断radiobutton的id是否等于选中的id if (radiobutton.getId()==i) { //设置当前页 vPager.setCurrentItem(j); } } } }

6.最后的效果图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-10-25 04:27:08

Android中fragment+viewpager实现布局的相关文章

Android中Fragment+ViewPager的配合使用

官方推荐 ViewPager与Fragment一起使用,可以更加方便的管理每个Page的生命周期,这里有标准的适配器实现用于ViewPager和Fragment,涵盖最常见的用例.FragmentPagerAdapter和FragmentStatePagerAdapter这两个类都有简单的代码显示如何构建一个完整的用户界面与他们.   适配器类:   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 2

Android中在ViewPager+Fragment中有两个Fragment

问题描述 Android中在ViewPager+Fragment中有两个Fragment 一个有ListView,一个有dialogdialog中有个edittext,然后edittext获取到焦点是,第一个Fragment中的getVIew会运行,为什么 解决方案 android中 Fragment中的viewpagerAndroid:fragment中嵌套viewpager,vierpager中有多个fragment 解决方案二: http://www.cnblogs.com/android

android中fragment和activity

问题描述 android中fragment和activity 我在MainActivity用了一个viewpager包裹了四个fragment ->> fragment1 fragment2 fragment3 fragment4 在fragment4中有一个按钮 点击按钮调转到登陆的Activity->>>LoginActivity 在LoginActivity 中 输入用户名和密码 登陆成功之后 又会重新回到 MainActivity中的fragment4的那个页面 但是

android中fragment切换的时候遇到非法参数异常的问题

问题描述 android中fragment切换的时候遇到非法参数异常的问题 FragmentTabHost中加入了两个fragment,片段1和片段2.运行后从片段1到片段2没有出问题,当从片段2再回到片段1的时候出现非法参数异常. 异常代码如图 找到错误主要原因是设置了一个布局的ID: gridview_layout.setId(CAL_LAYOUT_ID); 请问为什么在fragment中设置id切换片段后会发生异常? 解决方案 你这两个页面的id相同 但是页面不是同一种类型的 有冲突

Android 中使用 ViewPager实现屏幕页面切换和页面轮播效果_Android

之前关于如何实现屏幕页面切换,写过一篇博文<Android中使用ViewFlipper实现屏幕切换>,相比ViewFlipper,ViewPager更适用复杂的视图切换,而且Viewpager有自己的adapter,这也让其适应复杂对象,实现数据的动态加载. ViewPager是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而viewpager就是其中之一,利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等. 下面我们就展示下Vie

Android 中 Fragment的使用大全_Android

 Fragment必须总是被嵌入到一个Activity中,并且它的生命周期直接受宿主Activity生命周期的影响. 本文内容可以分为下面的几部分: 使用支持库 创建一个Fragment 创建一个动态UI 多个Fragment之间的通信 在一个Activity中,一个Fragment代表一种行为或者用户界面的一部分.你可以联合起来多个Fragment在一个Activity中创建多面板的UI,并且可以重用一个Fragment在多个activity中.你可以认为一个Fragment是一个Activi

Android 中 Fragment的使用大全

Fragment必须总是被嵌入到一个Activity中,并且它的生命周期直接受宿主Activity生命周期的影响. 本文内容可以分为下面的几部分: 使用支持库 创建一个Fragment 创建一个动态UI 多个Fragment之间的通信 在一个Activity中,一个Fragment代表一种行为或者用户界面的一部分.你可以联合起来多个Fragment在一个Activity中创建多面板的UI,并且可以重用一个Fragment在多个activity中.你可以认为一个Fragment是一个Activit

Android 中使用 ViewPager实现屏幕页面切换和页面轮播效果

之前关于如何实现屏幕页面切换,写过一篇博文<Android中使用ViewFlipper实现屏幕切换>,相比ViewFlipper,ViewPager更适用复杂的视图切换,而且Viewpager有自己的adapter,这也让其适应复杂对象,实现数据的动态加载. ViewPager是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而viewpager就是其中之一,利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等. 下面我们就展示下Vie

界面-Android中Fragment怎样重新加载UI

问题描述 Android中Fragment怎样重新加载UI 有这么一个需求:我从AFragment跳转到了一个Activity,在这个Activity中我做了一些操作(这些操作会让AFragment中使用的数据发生变化,从而选择不同的视图UI),然后点击回退按钮时,我希望AFragment中的界面能够根据Activity中的操作而变化.大神们,帮忙看看! 解决方案 考虑下用事件总线,有两个比较好的库EventBus和Otto 解决方案二: 感觉楼上的方法比较合理,但也可以用比较粗暴的广播的方法