简单新闻客户端(2)---新闻分页界面设计
来源:互联网 发布:nginx 域名解析 编辑:程序博客网 时间:2024/05/01 21:55
注意,我们现在的主界面还是空的,不过我们在主界面里留下了一个FrameLayout布局,对于不同的切换就是在Fragment的切换,也就是Fragment的动态添加。
再看一次原作者的新闻界面:
很容易看出来是Viewpage加上TabLayout的应用,关于这个
我也写过相关文章: android-UI-viewpager–PagerTabStrip的使用—网易云探索(2)
也可以参考文章:ViewPager实现页卡的最新方法–简洁的TabLayout
Fragment布局文件:
fragment_news:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/colorAccent" app:tabSelectedTextColor="@color/colorPrimaryDark" app:tabTextColor="#000"/> <!--可滑动的布局内容--> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="wrap_content"/></LinearLayout>
FragmentNews:
注意我们要做一个fragment里面嵌套fragment:先不嵌套
public class NewsFragment extends Fragment { public static final int NEWS_TYPE_TOP = 0; public static final int NEWS_TYPE_NBA = 1; public static final int NEWS_TYPE_CARS = 2; public static final int NEWS_TYPE_JOKES = 3; private TabLayout mTablayout; private ViewPager mViewPager; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_news, null); mTablayout = (TabLayout) view.findViewById(R.id.tab_layout); mViewPager = (ViewPager) view.findViewById(R.id.viewpager); mViewPager.setOffscreenPageLimit(3); setupViewPager(mViewPager); mTablayout.addTab(mTablayout.newTab().setText(R.string.top)); mTablayout.addTab(mTablayout.newTab().setText(R.string.nba)); mTablayout.addTab(mTablayout.newTab().setText(R.string.cars)); mTablayout.addTab(mTablayout.newTab().setText(R.string.jokes)); mTablayout.setupWithViewPager(mViewPager); return view; } private void setupViewPager(ViewPager mViewPager) { //Fragment中嵌套使用Fragment一定要使用getChildFragmentManager(),否则会有问题// MyPagerAdapter adapter = new MyPagerAdapter(getChildFragmentManager());// adapter.addFragment(NewsListFragment.newInstance(NEWS_TYPE_TOP), getString(R.string.top));// adapter.addFragment(NewsListFragment.newInstance(NEWS_TYPE_NBA), getString(R.string.nba));// adapter.addFragment(NewsListFragment.newInstance(NEWS_TYPE_CARS), getString(R.string.cars));// adapter.addFragment(NewsListFragment.newInstance(NEWS_TYPE_JOKES), getString(R.string.jokes)); // mViewPager.setAdapter(adapter); } public static class MyPagerAdapter extends FragmentPagerAdapter { private final List<Fragment> mFragments = new ArrayList<>(); private final List<String> mFragmentTitles = new ArrayList<>(); public MyPagerAdapter(FragmentManager fm) { super(fm); } public void addFragment(Fragment fragment, String title) { mFragments.add(fragment); mFragmentTitles.add(title); } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } @Override public CharSequence getPageTitle(int position) { return mFragmentTitles.get(position); } }}
监听按钮,动态添加fragment:
@Override public boolean onNavigationItemSelected(MenuItem menuItem) { Toast.makeText(getApplicationContext(), menuItem.getTitle(), Toast.LENGTH_LONG).show(); switch (menuItem.getItemId()){ case R.id.navigation_news: getSupportFragmentManager().beginTransaction().replace(R.id.frame_content, new NewsFragment()).commit(); mToolbar.setTitle("新闻"); break; default: break; } menuItem.setChecked(true); mDrawerLayout.closeDrawers(); return true; }
测试:
0 0
- 简单新闻客户端(2)---新闻分页界面设计
- 简单新闻客户端(1)---主界面设计
- 简单新闻客户端
- 简单新闻客户端案例
- 简单新闻客户端实现
- 制作简单的新闻客户端
- 新闻分页
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 新闻客户端
- 解决 Android 编译报错:Error:Execution failed for task ':app:transformClassesWithDexForDebug' 的过程
- Objective-C研究院
- C++ ini配置文件的遍历
- 利用rman恢复被失误drop或者truncate的表
- java入门、java学习:java日期格式处理类,《上》
- 简单新闻客户端(2)---新闻分页界面设计
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- 如何在一天内为你的实验室做一个网站
- Java数据结构与算法之常见排序算法总结
- SSH Agent Forwarding原理
- 2分钟读懂大数据框架Hadoop和Spark的异同
- 游戏服务器端开发的基本大纲
- android 报自定义的application无法强制转换成application问题细节解决
- Okhttp, Retrofit, android-async-http, Volley用哪个好