如何使用片段在 ViewPager 中放置标题?

编程入门 行业动态 更新时间:2024-10-26 02:27:06
本文介绍了如何使用片段在 ViewPager 中放置标题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在使用 ViewPager 来允许用户在片段之间滑动.

I am using ViewPager to allow user to swipe between fragments.

如何将每个片段的标题添加到屏幕上?

How can I add a the title of each fragment to the screen?

package com.multi.andres; import java.util.List; import java.util.Vector; import com.viewpagerindicator.TitlePageIndicator; import com.viewpagerindicator.TitleProvider; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; public class ViewPagerFragment extends FragmentActivity{ private PagerAdapter mPagerAdapter; //contiene el pager adapter private static String[] titulosPaginas = { "APP 1", "APP 2" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.lcmeter); //layout que contiene el ViewPager initialisePaging(); //inicializo las paginas } private void initialisePaging() { List<Fragment> fragments = new Vector<Fragment>(); fragments.add(Fragment.instantiate(this, FragmentPrueba1.class.getName())); fragments.add(Fragment.instantiate(this, FragmentPrueba2.class.getName())); this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments); ViewPager pager = (ViewPager)super.findViewById(R.id.pager); pager.setAdapter(this.mPagerAdapter); //Agrega los titulos TitlePageIndicator titleIndicator = (TitlePageIndicator) findViewById(R.id.titulos); //layout XML titleIndicator.setViewPager(pager); } /** ************************************************************************************************* /** Clase: public class PagerAdapter extends FragmentPagerAdapter implements TitleProvider /** Notas: extends FragmentPagerAdapter permite el uso de las paginas de ViewPager pero con Fragments /** implements TitleProvider permite el uso de los titulos en las paginas /** Funcion: crea paginas por las cuales deslizarse horizontalmente las cuales son usadas ****************************************************************************************************/ public class PagerAdapter extends FragmentPagerAdapter implements TitleProvider { private List<Fragment> fragments; public String getTitle(int position) { // TODO Auto-generated method stub return titulosPaginas[position]; // titulo de la pagina } public PagerAdapter(FragmentManager fm, List<Fragment> fragments) { super(fm); this.fragments = fragments; } @Override public int getCount() { return this.fragments.size(); } @Override public Fragment getItem(int position) { return this.fragments.get(position); } } }

但它没有显示 ViewPager 的标题,我不知道为什么.我以前使用带有标题的 ViewPager,但没有使用片段,现在我无法使用标题.

But it doesn't show the titles of ViewPager and I don't know why. I used ViewPager with titles before but not with fragments and I cannot get titles working now.

推荐答案

您还可以使用 Jake Wharton 的 ViewPagerIndicator 库来得到想要的效果.Davek804 的答案也有效,但它要求您引用整个 ActionBarSherlock 库,如果您只需要一个支持自定义/样式标题的 ViewPager,这不是可取的.

You can also use Jake Wharton's ViewPagerIndicator library to get the desired effect. Davek804's answer works too, but it requires you to reference the entire ActionBarSherlock library, which isn't as preferable if you only need a ViewPager that supports custom/styled titles.

设置它以使其正常工作只需编写一点点 XML,在 Activity 中初始化您的 ViewPager,并实现一个 FragmentAdapter(其中 extends FragmentPagerAdapter 实现 TitleProvider)指定哪些页面包含哪些 Fragment.

Setting it up to work correctly is simply a matter of writing a tiny bit of XML, initializing your ViewPager in your Activity, and implementing a FragmentAdapter (which extends FragmentPagerAdapter implements TitleProvider) to specify which pages hold which Fragments.

  • XML 布局

  • XML layout <LinearLayout xmlns:android="schemas.android/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <com.viewpagerindicator.TabPageIndicator android:id="@+id/titles" android:layout_height="wrap_content" android:layout_width="match_parent"/> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> </LinearLayout>

  • 在你的Activity

    //Set the pager with an adapter ViewPager pager = (ViewPager)findViewById(R.id.pager); pager.setAdapter(new CustomAdapter(getSupportFragmentManager())); //Bind the title indicator to the adapter TitlePageIndicator titleIndicator = (TitlePageIndicator) findViewById(R.id.titles); titleIndicator.setViewPager(pager);

  • 实现一个CustomFragmentAdapter

    public static class CustomFragmentAdapter extends FragmentPagerAdapter implements TitleProvider { public static final int POSITION_PAGE_1 = 0; public static final int POSITION_PAGE_2 = 1; public static final int POSITION_PAGE_3 = 2; private static final String[] TITLES = new String[] { "Title 1", "Title 2", "Title 3" }; public static final int NUM_TITLES = TITLES.length; public CustomFragmentAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { switch (position) { case POSITION_TITLE_1: return PageOneFragment.newInstance(); case POSITION_TITLE_2: return PageTwoFragment.newInstance(); case POSITION_TITLE_3: return PageThreeFragment.newInstance(); } return null; } @Override public int getCount() { return NUM_TITLES; } @Override public String getTitle(int position) { return TITLES[position % NUM_TITLES].toUpperCase(); } }

  • ViewPagerIndicator 库支持标题功能:

    The ViewPagerIndicator library supports the titling features:

  • TitlePageIndicator

    TabPageIndicator

    CirclePageIndicator

  • 更多推荐

    如何使用片段在 ViewPager 中放置标题?

    本文发布于:2023-11-03 13:17:56,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1555215.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:如何使用   片段   标题   ViewPager

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!