ViewPager上的CirclePageIndicator

时间:2014-01-18 08:53:30

标签: android android-viewpager viewpagerindicator

我正在使用ViewPagerIndicator制作图片幻灯片,以显示幻灯片中的当前位置。当我按照文档中的描述使用它时,一切正常,但我希望ViewPagerCirlePagerIndicator包含在我提供边框的布局中。当我尝试这样做时,只有ViewPager位于顶部且我无法看到CirclePagerIndicator

那么如何在CirclePagerIndicator之上获取ViewPager

这是我的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="fill_parent"
         android:layout_height="0dp"
         android:layout_margin="3dp"
         android:background="@drawable/stroke"
         android:layout_weight="0.33">

         <android.support.v4.view.ViewPager
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/view_pager"
        android:layout_width="fill_parent"
        android:padding="10dp"
        android:layout_height="fill_parent"/>

        <com.viewpagerindicator.CirclePageIndicator
        android:id="@+id/titles"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:layout_width="fill_parent" /> 

   </RelativeLayout>
    <LinearLayout
     .
     .
     .other stuffs

我知道RelativeLayout内的项目放在一个z顺序堆栈中。所以我将CirclePagerIndicator放在下面,以便它显示在顶部。此外,通过这样做,我将能够捕获ViewPager上的触摸事件?

这就是我将图片添加到ViewPager

的方法
 @Override
        public Object instantiateItem(ViewGroup container, int position) 
        {
            Context context = LoginActivity.this;
            ImageView imageView = new ImageView(context);

            imageView.setImageResource(myImages[position]);
            imageView.setScaleType(ScaleType.CENTER_INSIDE);
            ((ViewPager) container).addView(imageView, 0);
            return imageView;
        }

2 个答案:

答案 0 :(得分:2)

如果您希望它位于顶部,请将其添加到顶部。使用属性android:layout_alignParentTop="true"

并在ViewPager

下方添加CirclePageIndicator
<com.viewpagerindicator.CirclePageIndicator
    android:id="@+id/titles"
    android:layout_height="wrap_content"
    android:padding="3dp"
    android:layout_alignParentTop="true" // Here this will put it on top
    android:layout_width="fill_parent" /> 

<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/view_pager"
    android:layout_width="fill_parent"
    android:padding="10dp"
    android:layout_below="@id/titles" // Here this will put it below CirclePageIndicator
    android:layout_height="fill_parent"/>

答案 1 :(得分:0)

解决了,这是怎么回事。

<RelativeLayout
        android:layout_width="fill_parent"
         android:layout_height="0dp"
         android:layout_margin="3dp"
         android:background="@drawable/stroke"
         android:layout_weight="0.33">

         <android.support.v4.view.ViewPager
         xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/view_pager"
        android:layout_width="fill_parent"
        android:padding="10dp"
        android:layout_height="fill_parent"/>

        <com.viewpagerindicator.CirclePageIndicator
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/titles"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:layout_alignParentBottom="true" //this line
        android:layout_width="fill_parent" /> 
   </RelativeLayout>