【问题标题】:Android swipe view with view pager带有视图寻呼机的 Android 滑动视图
【发布时间】:2014-05-25 19:37:58
【问题描述】:

基于android创建Swipe Views with Tabs

http://developer.android.com/training/implementing-navigation/lateral.html

如何使用自定义适配器的 listview 并在此示例中使用?我的意思是显示简单的 textview ,显示为。

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:padding="6dip" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="6dip"
        android:contentDescription="TODO"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/firstLine"
        android:layout_width="fill_parent"
        android:layout_height="26dip"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@id/icon"
        android:ellipsize="marquee"
        android:singleLine="true"
        android:text="Description"
        android:textSize="12sp" />

    <TextView
        android:id="@+id/secondLine"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/secondLine"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_alignWithParentIfMissing="true"
        android:layout_toRightOf="@id/icon"
        android:gravity="center_vertical"
        android:text="Example application"
        android:textSize="16sp" />

  </RelativeLayout>

结果应该是 Play 商店应用程序。

谢谢。

【问题讨论】:

标签: android android-viewpager swipeview


【解决方案1】:

您可以尝试查看我的其他帖子:

Android List view layout Similar to Google play

Unable to use AndroidDrawer (sidebar like facebook)

也许这就是你要找的东西:

How to use swipe gesture in a view pager's page with android?

试试这些链接。也许这就是你要找的。

这是更新

1) 制作一个适配器来处理您的片段:

public class MyAdapter extends FragmentStatePagerAdapter {

    public MyAdapter(FragmentManager fm) {

        super(fm);

    }

    @Override
    public Fragment getItem(int index) {

        switch (index) {
        case 0:

            return new FirstFragment();

        case 1:

            return new SecondFragment();
        case 2:

            return new ThirdFragment();

        }
        return null;

    }

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

}

2) 添加片段: 我只是为一个片段添加代码。你可以照着做。

public class FirstFragment extends Fragment {

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.somefragment, container, false);//You will have your custom layout and add more items. 

    return view;

}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);

    TextView tv = (TextView)getActivity().findViewById(R.id.textview1);
    //You can add different items in here according to your needs. 
    //You will have your own code to do stuff. Like to use a listview or a gridview etc. You will make a separate adapter in a separate class and use that adapter in this onActivityCreated() method.
}


}

3)修改MainActivity:

public class AllActivities extends FragmentActivity implements ActionBar.TabListener {

    public ViewPager viewPager;
    private MyAdapter mAdapter;
    private ActionBar actionBar;
    private String [] tabs = {"FirstFragment","SecondFragment","ThirdFragment"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Initializing all stuff
        viewPager = (ViewPager)findViewById(R.id.pager);

        actionBar = getActionBar();
        mAdapter = new MyAdapter(getSupportFragmentManager());
        viewPager.setAdapter(mAdapter);
        actionBar.setHomeButtonEnabled(true);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);



        //Add the tabs here
        for(String tab_name:tabs){
            actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this));
        }

        viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){

            @Override
        public void onPageSelected(int position){

                //on Page change, that particular page should be selected
                actionBar.setSelectedNavigationItem(position);
            }

            @Override
                public void onPageScrolled(int arg0,float arg1,int arg2){

            }
            @Override
        public void onPageScrollStateChanged(int position){

            }

        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction fragmentTransaction) {

        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction fragmentTransaction) {



    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction fragmentTransaction) {

        viewPager.setCurrentItem(tab.getPosition());

    }
}

在你实现了这个例子之后,你就不用担心这个 MainActivity 了。您只需添加更多片段就是将片段添加到您的适配器并根据它构建页面。另外,添加private String [] tabs = {"FirstFragment","SecondFragment","ThirdFragment","You other fragments when you will define"};

要让 google 像导航抽屉一样玩,您可以参考我的前两个链接,然后按照您的喜好进行操作。

希望这对您正在寻找的内容有所帮助。

【讨论】:

  • 您好,感谢您的回复。我读了你的链接。我的问题仍然没有解决。如果我有 ViewPager 并且每个视图都显示一个简单的元素 TextView 并且所有这些都在单个 Activity 主中完成,我怎么知道为每个视图创建不同的自定义复杂布局?这仍然是在单一活动中完成的吗?
  • 您可以通过为每个视图添加不同的布局来做到这一点。例如,在一个视图中,您可以有一个文本视图和一个图像视图,在第二个视图中,您可能有一个图像视图和一个列表视图,并且它会一直持续下去。我会更新我的答案以获得更多解释。
  • 是的,我的意思是,我正在寻找可以完全满足您的需求的示例。我需要为每个布局定义自定义适配器吗?这是在 MainActivity 中完成的吗?还是需要定义 subActivity ?
  • 您只需要一个活动即可完成此操作,因为您只是在适配器中膨胀不同的布局。您只需要一个适配器即可实现此目的。但是,如果您打算将这些布局用于其他目的,为什么不只使用片段。修改它会容易得多。您可以拥有任意数量的 Fragment,并根据需要自定义 Fragment。
  • 例如,您可以有 5 个片段,每个片段上有不同的项目,您只需要一个适配器即可实现。
猜你喜欢
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 1970-01-01
  • 2021-12-25
  • 2015-03-12
  • 1970-01-01
相关资源
最近更新 更多