ViewPager中的图片不会填满屏幕

时间:2015-10-06 02:36:15

标签: android android-viewpager

我从API接收一组URL图像以显示为滑块,因此我使用viewpager来完成我的工作,当我尝试在viewpager中设置图像以根据imagesize填充屏幕时,这不会发生在所有。

enter image description here

所有红线都是巨大的间距..我不知道为什么会这样?

我正在尝试在XML中执行以下操作:

<RelativeLayout
            android:id="@+id/pagerIndicator"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:layout_below="@+id/searchlayout"
            android:layout_marginBottom="2dp"
            android:layout_marginTop="2dp"
            android:orientation="vertical">

            <TextView
                android:id="@+id/noData"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:text="@string/nointernet"
                android:textColor="#000000"
                android:textSize="14sp"
                android:textStyle="italic"
                android:visibility="gone" />

            <android.support.v4.view.ViewPager
                android:id="@+id/myviewpager"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

            </android.support.v4.view.ViewPager>

            <FrameLayout
                android:id="@+id/progressContainer"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:visibility="gone"
                android:layout_centerVertical="true">

                <com.ylg.librarys.ProgressWheel xmlns:wheel="http://schemas.android.com/apk/res-auto"
                    android:id="@+id/progress_wheel"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_gravity="center"
                    android:visibility="visible"
                    app:matProg_barColor="@color/colorPrimary"
                    app:matProg_progressIndeterminate="true" />
            </FrameLayout>
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/pagerLayoutIndicator"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/pagerIndicator"
            android:layout_marginBottom="5dp"
            android:layout_marginTop="2dp">

            <com.viewpagerindicator.CirclePageIndicator
                android:id="@+id/indicator"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:fillColor="@color/orangeText"
                app:pageColor="@color/whitetext"
                app:strokeColor="@color/orangeText" />
        </RelativeLayout>

PageAdapter看起来像这样:

@Override
        public Object instantiateItem(ViewGroup container, int position) 
        {
            progressContainer.setVisibility(View.GONE);

            wheel_layout.setVisibility(View.GONE);

            noData = (TextView)rootView.findViewById(R.id.noData);
            noData.setVisibility(View.GONE);

            ImageView imageView = new ImageView(getActivity());
            imageLoader.DisplayImage(bannerItems.get(position).getbannerImage(), 0, imageView);

            LayoutParams imageParams = new LayoutParams(
                    LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
            imageView.setLayoutParams(imageParams);

            LinearLayout layout = new LinearLayout(getActivity());
            layout.setOrientation(LinearLayout.VERTICAL);
            LayoutParams layoutParams = new LayoutParams(
                    LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
            layout.setLayoutParams(layoutParams);
            layout.addView(imageView);

            final int page = position;
            layout.setOnClickListener(new OnClickListener()
            {

                @Override
                public void onClick(View v) {
                    Toast.makeText(getActivity(), 
                            "Page " + page + " clicked", 
                            Toast.LENGTH_LONG).show();
                }});

            container.addView(layout);

            return layout;
        }

奇怪的是如果我没有为viewpager所在的relativeLayout提供高度,我根本看不到图像。那就是如果我设置:

       <RelativeLayout
            android:id="@+id/pagerIndicator"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/searchlayout"
            android:layout_marginBottom="2dp"
            android:layout_marginTop="2dp"
            android:orientation="vertical">

我只获得PageIndicator。带有图像的ViewPager上面根本没有显示。

enter image description here

不确定为什么会这样?如何设置图像match_parent以使其显示完整而没有任何间隙?

3 个答案:

答案 0 :(得分:3)

尝试设置imageView的for (int r=0; r < 4; ++r) { for (int c=0; c < 4; ++c) { if (c > 0) { cout << " "; } cout << deck[r][c]; } cout << "\n"; } 。 例如,

ScaleType

尝试另一种ScaleTypes,

  1. imageView.setScaleType(ScaleType.FIT_XY);
  2. ScaleType.CENTER
  3. ScaleType.CENTER_INSIDE
  4. 希望这项工作。

答案 1 :(得分:0)

通过您的instantiateItem方法添加

imageView.setScaleType(ImageView.ScaleType.FIT_XY);

这将在整个屏幕上填充图像去除空白。

您也可以尝试其他方法

imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

答案 2 :(得分:0)

无法满足您的需要。如果视图分页器包含imageview,则imageview需要固定的高度和宽度。您可以将scaletype设置为fitStartfitEnd以使图像之前或之后的间隙。它将解决一些间隙问题。

谢谢。