在主页面新闻页签中,当选中新闻选项时,可以向左滑动N个页面。
中国和国际两个页签是滑动效果进行切换的,是在Fragment中添加了一个ViewPager布局,并用了N个ViewPager进行填充切换。
这里是主页面的布局中Fragment的xml文件:
<FrameLayout android:id="@+id/fl_content" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > </FrameLayout>
flcontent.addView(pager.mRootView);//将菜单详情页添加到Fragment中flcontent是findViewByid拿到的。
pager.mRootVIew是对应的ViewPager返回的View对象。
下面是对这个需要返回的ViewPager对象的设置,实现了返回的ViewPager对象,也就实现了滑动切换新子页签的功能。
public class TabDetailPager extends BaseMenuDetailPager { public NewsTabData mTabData; private TextView text; public TabDetailPager(Activity mActivity, NewsTabData newsTabData) { super(mActivity); this.mTabData=newsTabData; } @Override public View initView() { text=new TextView(mActivity); //text.setText(Title); text.setTextColor(Color.RED); text.setTextSize(25); text.setGravity(Gravity.CENTER); return text; } @Override public void initData() { text.setText(mTabData.title); } }
import java.util.ArrayList; import com.example.zhihuibj.R; import com.example.zhihuibj.BaseMenuDetailPager.MenuDetail.TabDetailPager; import com.example.zhihuibj.domain.NewsData.NewsTabData; import android.app.Activity; import android.graphics.Color; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /* * 菜单详情页-新闻 */ public class NewsMenuDetailPager extends BaseMenuDetailPager{ private ViewPager mViewPager; private ArrayList<TabDetailPager> mpagerlist; private ArrayList<NewsTabData> mNewsTabData;//页签网络数据 public NewsMenuDetailPager(Activity mActivity, ArrayList<NewsTabData> children) { super(mActivity); mNewsTabData=children;//从网络获取的数据直接通过狗仔函数传进来mNewsTabData } @Override public View initView() { View view=View.inflate(mActivity, R.layout.news_menu_detail, null);//将ViewPager实例化成对象 mViewPager=(ViewPager) view.findViewById(R.id.vp_menu_detail);//获得ViewPager控件,对于ViewPager的更新时通过对控件切换来实现的 return view; } @Override public void initData() { //初始化页签 mpagerlist = new ArrayList<TabDetailPager>(); for(int i=0;i<mNewsTabData.size();i++) //根据网络数据的多少,添加N个ViewPager { TabDetailPager pager=new TabDetailPager(mActivity,mNewsTabData.get(i)); mpagerlist.add(pager); //System.out.println(i+"!!!!"); } mViewPager.setAdapter(new MenuDetailApapter()); //System.out.println("子类!!!"); } class MenuDetailApapter extends PagerAdapter{ @Override public int getCount() { // TODO Auto-generated method stub return mpagerlist.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0==arg1; } @Override public Object instantiateItem(ViewGroup container, int position) { TabDetailPager pager = mpagerlist.get(position); pager.initData();//初始化数据 实际是初始化TabDetailPager中的数据 container.addView(pager.mRootView); //给容器中添加View对象 return pager.mRootView; // 用于destroyItem的对象 } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } }