如何使用ViewPager或其他东西滚动文本?

时间:2014-06-03 03:41:23

标签: android android-viewpager

我所看到的一切都是矫枉过正的。我正在寻找一种让我的应用程序的某些部分在向左/向右滑动时滚动浏览几个文本片段的方法。想象一下您滚动浏览的图库,但每个图像库只有一行文字而不是图像。谢谢!

3 个答案:

答案 0 :(得分:2)

您可以查看我的其他帖子以获取更详细的答案。我的其他帖子中的解释非常简单。

How to properly use fragments with ViewPager?

Multiple ViewPagers in on Activity

How to swipe xml layouts using ViewPager

这些是您可以找到帮助的几个例子。希望这有助于.. :))

如果这些答案仍有问题,请看一下这个简单的例子:

请按照以下简单步骤操作:

第1步:为您的视图寻呼机创建布局:(activity_main.xml)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" 
    android:background="#333333">

    <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="wrap_content" />

</RelativeLayout>

第2步:创建另一个布局来保存textview项目:(items.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/text_view1"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:background="#94999F"
        android:gravity="left|center_vertical"
        android:paddingLeft="10dp"
        android:text="Hello"
        android:textColor="#FFFFFF"
        android:textSize="17sp"
        android:textStyle="bold"
        android:visibility="visible" />

</LinearLayout>

第3步:在您的主活动中为您的适配器创建一个类,或者您可以为适配器创建一个单独的类。这只是同一个类中的一个适配器。这是完整的代码:

public class MainActivity extends Activity {

    ViewPager mViewPager;
    String[] items = { "one", "two", "three", "four", "five" };
    ArrayList<String> mArrayList = new ArrayList<String>();
    Context context;

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

        /*for (String s : items) {

            mArrayList.add(s);

        }*/

            for(int i = 0;i<100;i++){

        mArrayList.add("Item " + i);

    }

        mViewPager = (ViewPager) findViewById(R.id.pager);
        MyAdapter mAdapter = new MyAdapter(context, mArrayList);
        mViewPager.setAdapter(mAdapter);

    }

    @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;
    }
    /*Here's the adapter*/
    private class MyAdapter extends PagerAdapter {

        ArrayList<String> someList = new ArrayList<String>();
        Context context;

        public MyAdapter(Context context, ArrayList<String> newsomeList) {

            super();
            this.context = context;
            this.someList = newsomeList;

        }

        @SuppressLint("NewApi")
        @Override
        public void finishUpdate(ViewGroup container) {
            // TODO Auto-generated method stub
            super.finishUpdate(container);

        }

        @Override
        public int getCount() {

            return someList.size();

        }

        @Override
        public boolean isViewFromObject(View collection, Object object) {

            return collection == ((View) object);
        }

        @Override
        public Object instantiateItem(View collection, int position) {

            // Inflating layout
            LayoutInflater inflater = (LayoutInflater) collection.getContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            // Setting view you want to display as a row element
            View view = inflater.inflate(R.layout.items, null);

            TextView itemText = (TextView) view.findViewById(R.id.text_view1);
            // Getting reference for text view and inflate the view for Answers

            try {

                itemText.setText(someList.get(position));

            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            ((ViewPager) collection).addView(view, 0);
            return view;

        }

        @Override
        public void destroyItem(View collection, int position, Object view) {
            ((ViewPager) collection).removeView((View) view);

        }

    }

}

你需要......:)

希望这会对你有所帮助..它是你需要的一个非常简单的例子。祝你好运.. :)

答案 1 :(得分:1)

答案 2 :(得分:0)

您可以使用HorizontalScrollView。一个例子是here。您可以使用TextView代替按钮,为您提供服务。

否则您也可以使用ViewPager。其他人已经给你教程就是这样。但我认为,为了达到你的目的HorizontalScrollView是必要的。