我从API接收一组URL图像以显示为滑块,因此我使用viewpager来完成我的工作,当我尝试在viewpager中设置图像以根据imagesize填充屏幕时,这不会发生在所有。
所有红线都是巨大的间距..我不知道为什么会这样?
我正在尝试在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上面根本没有显示。
不确定为什么会这样?如何设置图像match_parent以使其显示完整而没有任何间隙?
答案 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,
imageView.setScaleType(ScaleType.FIT_XY);
ScaleType.CENTER
ScaleType.CENTER_INSIDE
希望这项工作。
答案 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设置为fitStart
或fitEnd
以使图像之前或之后的间隙。它将解决一些间隙问题。
谢谢。