Android第三方寻呼控制,比如Etsy iPhone中的那种?

Android第三方寻呼控制,比如Etsy iPhone中的那种?,android,paging,android-viewpager,etsy,Android,Paging,Android Viewpager,Etsy,我正在开发一款Android应用程序。我们的设计师认为我们需要一个类似Etsy iPhone的分页控件。(见下图) 基本上,您可以在灰色标题栏或内容切换屏幕上滑动 是否有任何现有的第三方控件执行此操作 您需要使用小部件。查看Android开发者博客,了解其工作原理: 如果您需要向后兼容Android 2.x,请查看Android兼容性库 所有解释如下: 该页面中的一些代码: public class CollectionDemoActivity extends FragmentActivity

我正在开发一款Android应用程序。我们的设计师认为我们需要一个类似Etsy iPhone的分页控件。(见下图)

基本上,您可以在灰色标题栏或内容切换屏幕上滑动

是否有任何现有的第三方控件执行此操作

您需要使用小部件。查看Android开发者博客,了解其工作原理:

如果您需要向后兼容Android 2.x,请查看Android兼容性库

所有解释如下:

该页面中的一些代码:

public class CollectionDemoActivity extends FragmentActivity {
    // When requested, this adapter returns a DemoObjectFragment,
    // representing an object in the collection.
    DemoCollectionPagerAdapter mDemoCollectionPagerAdapter;
    ViewPager mViewPager;

    public void onCreate(Bundle savedInstanceState) {
        // ViewPager and its adapters use support library
        // fragments, so use getSupportFragmentManager.
        mDemoCollectionPagerAdapter =
                new DemoCollectionPagerAdapter(
                        getSupportFragmentManager());
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mDemoCollectionPagerAdapter);
    }
}

// Since this is an object collection, use a FragmentStatePagerAdapter,
// and NOT a FragmentPagerAdapter.
public class DemoCollectionPagerAdapter extends
        FragmentStatePagerAdapter {
    public DemoCollectionPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        Fragment fragment = new DemoObjectFragment();
        Bundle args = new Bundle();
        // Our object is just an integer :-P
        args.putInt(DemoObjectFragment.ARG_OBJECT, i + 1);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public int getCount() {
        return 100;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return "OBJECT " + (position + 1);
    }
}

// Instances of this class are fragments representing a single
// object in our collection.
public static class DemoObjectFragment extends Fragment {
    public static final String ARG_OBJECT = "object";

    @Override
    public View onCreateView(LayoutInflater inflater,
            ViewGroup container, Bundle savedInstanceState) {
        // The last two arguments ensure LayoutParams are inflated
        // properly.
        View rootView = inflater.inflate(
                R.layout.fragment_collection_object, container, false);
        Bundle args = getArguments();
        ((TextView) rootView.findViewById(android.R.id.text1)).setText(
                Integer.toString(args.getInt(ARG_OBJECT)));
        return rootView;
    }
}


<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.view.PagerTitleStrip
        android:id="@+id/pager_title_strip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="#33b5e5"
        android:textColor="#fff"
        android:paddingTop="4dp"
        android:paddingBottom="4dp" />

</android.support.v4.view.ViewPager>
公共类CollectionDemoActivity扩展了FragmentActivity{
//请求时,此适配器返回DemoObjectFragment,
//表示集合中的对象。
DemoCollectionPagerAdapter mDemoCollectionPagerAdapter;
ViewPager mViewPager;
创建时的公共void(Bundle savedInstanceState){
//ViewPager及其适配器使用支持库
//片段,因此请使用getSupportFragmentManager。
mDemoCollectionPagerAdapter=
新DemoCollectionPagerAdapter(
getSupportFragmentManager());
mViewPager=(ViewPager)findViewById(R.id.pager);
mViewPager.setAdapter(mDemoCollectionPagerAdapter);
}
}
//由于这是一个对象集合,请使用FragmentStatePagerAdapter,
//而不是一个碎片。
公共类DemoCollectionPagerAdapter扩展
碎片雷达{
公共DemoCollectionPagerAdapter(碎片管理器fm){
超级(fm);
}
@凌驾
公共片段getItem(int i){
Fragment Fragment=新的DemoObjectFragment();
Bundle args=新Bundle();
//我们的对象只是一个整数:-P
args.putInt(DemoObjectFragment.ARG_对象,i+1);
fragment.setArguments(args);
返回片段;
}
@凌驾
public int getCount(){
返回100;
}
@凌驾
公共字符序列getPageTitle(int位置){
返回“对象”+(位置+1);
}
}
//此类的实例是表示单个
//对象在我们的集合中。
公共静态类DemoObjectFragment扩展了片段{
公共静态最终字符串ARG_OBJECT=“OBJECT”;
@凌驾
创建视图上的公共视图(更平坦的充气机,
视图组容器,捆绑包savedInstanceState){
//最后两个参数确保LayoutParams已膨胀
//对。
视图根视图=充气机。充气(
R.layout.fragment\u collection\u object,container,false);
Bundle args=getArguments();
((TextView)rootView.findviewbyd(android.R.id.text1)).setText(
toString(args.getInt(ARG_对象));
返回rootView;
}
}

我建议您使用杰克·沃顿(Jake Whartons)(或普通的寻呼机):

为每个布局创建一个
片段
,并在片段中使用
onCreateView()
方法将布局设置为片段(仅当您希望有不同的布局时。如果您有相同的布局但只有不同的数据,您可以只使用一个片段并在getItem()方法中传递数据)

现在创建一个
FragmentPagerAdapter
应该有一个名为
getItem()
的方法<代码>切换位置并将其设置为片段:

@Override
            public Fragment getItem(int position) {
                switch(position){
                case 0:
                    TestFragment fragment = new TestFragment();  

                    return fragment;

                case 1:
                            TestFragment2 fragment2 = new TestFragment2();  
                    return fragment2;

                }

                return defaultFragment fragment3 = new defaultFragment();  
                    return fragment3;
            }

现在,您应该能够轻松地浏览布局(片段)

发布多个问题的复制粘贴样板/逐字回答时要小心,这些问题往往被社区标记为“垃圾邮件”。如果你这样做的话,通常意味着问题是重复的,所以请将它们标记为:@Kev我刚才复制了我自己的答案,这是我不久前发布的。但你是对的,下次我会把它标上:)
@Override
            public Fragment getItem(int position) {
                switch(position){
                case 0:
                    TestFragment fragment = new TestFragment();  

                    return fragment;

                case 1:
                            TestFragment2 fragment2 = new TestFragment2();  
                    return fragment2;

                }

                return defaultFragment fragment3 = new defaultFragment();  
                    return fragment3;
            }