当前位置: 首页 > 知识库问答 >
问题:

图像视图填充空空间ViewPager Android

仰雅昶
2023-03-14

我一直在使用View Pager的图片幻灯片,但是我无法使View Pager内部的图像视图填充View Pager内部水平和垂直的完整空间。知道怎么做吗?

我在我的页面适配器中尝试过这个

mImageView.setAdjustViewBounds(true);
mImageView.setScaleType(ImageView.ScaleType.FIT_CENTER);

但还是没有运气:(

我的布局

<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:padding="2dp"
tools:context=".MainActivity" >

<RelativeLayout
    android:id="@+id/img_slideshow_layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:background="@drawable/img_border" >

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

    <TextView
        android:id="@+id/img_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/indicator"
        android:background="#88343434"
        android:ellipsize="end"
        android:paddingBottom="2dp"
        android:paddingLeft="5dp"
        android:paddingRight="2dp"
        android:paddingTop="2dp"
        android:singleLine="true"
        android:textColor="#ededed" />

    <apps.modisku.com.modisku.helper.CirclePageIndicator
        android:id="@+id/indicator"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/view_pager"
        android:padding="10dip" />
</RelativeLayout>

null

<?xml version="1.0" encoding="utf-8"?>
<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:padding="3dp" >

<ImageView
    android:id="@+id/image_display"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:contentDescription="@string/txt_image_slider" />

   </RelativeLayout>

我的PageAdapter

public class ImageSlideAdapter extends PagerAdapter {
    ImageLoader imageLoader = ImageLoader.getInstance();
    DisplayImageOptions options;
    private ImageLoadingListener imageListener;
    FragmentActivity activity;
    List<Product> products;
    HomeFragment homeFragment;

    public ImageSlideAdapter(FragmentActivity activity, List<Product> products,
                             HomeFragment homeFragment) {
        this.activity = activity;
        this.homeFragment = homeFragment;
        this.products = products;
        options = new DisplayImageOptions.Builder()
                .showImageOnFail(R.drawable.ic_error)
                .showStubImage(R.drawable.ic_launcher)
                .showImageForEmptyUri(R.drawable.ic_empty).cacheInMemory()
                .cacheOnDisc().showImageOnLoading(R.drawable.loadingicontransprant).build();

        imageListener = new ImageDisplayListener();
    }

    @Override
    public int getCount() {
        return products.size();
    }

    @Override
    public View instantiateItem(ViewGroup container, final int position) {
        LayoutInflater inflater = (LayoutInflater) activity
                .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.vp_image, container, false);

        ImageView mImageView = (ImageView) view
                .findViewById(R.id.image_display);


       // mImageView.setLayoutParams(new ViewGroup.LayoutParams(mScreenWidth, ViewGroup.LayoutParams.WRAP_CONTENT));
        mImageView.setAdjustViewBounds(true);
        mImageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
        mImageView.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Bundle arguments = new Bundle();
                Fragment fragment = null;
                Log.d("position adapter", "" + position);
                Product product = (Product) products.get(position);
                arguments.putParcelable("singleProduct", product);

                // Start a new fragment
                fragment = new ProductDetailFragment();
                fragment.setArguments(arguments);

                FragmentTransaction transaction = activity
                        .getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.promofragment, fragment,
                        ProductDetailFragment.ARG_ITEM_ID);
                transaction.addToBackStack(ProductDetailFragment.ARG_ITEM_ID);
                transaction.commit();
            }
        });
        imageLoader.displayImage(
                ((Product) products.get(position)).getImageURL(), mImageView,
                options, imageListener);
        container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    private static class ImageDisplayListener extends SimpleImageLoadingListener {

        static final List<String> displayedImages = Collections
                .synchronizedList(new LinkedList<String>());

        @Override
        public void onLoadingComplete(String imageUri, View view,
                                      Bitmap loadedImage) {
            if (loadedImage != null) {
                ImageView imageView = (ImageView) view;
                boolean firstDisplay = !displayedImages.contains(imageUri);
                if (firstDisplay) {
                    FadeInBitmapDisplayer.animate(imageView, 500);
                    displayedImages.add(imageUri);
                 }
               }
           }
        }
    }

共有1个答案

益光亮
2023-03-14
    Use FrameLayout instead of RelativeLayout

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout 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">

    <ImageView
        android:id="@+id/image_display"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        android:contentDescription="@string/txt_image_slider" />

       </FrameLayout>
 类似资料:
  • 我有一个<代码> 窄的标题行 我想占用div剩余部分的图像。 如何使用纯CSS(无Javascript)实现这一点?我一直在尝试很多事情,运气不好。 这是我能得到的最接近的;图像偷偷溜出了的绿色边框 下面是我尝试使用,但失败了。

  • 为了使其快速,我有一个响应侧栏(使用viewport),顶部有一个图像。侧栏是200px宽,我的图像设置为200px宽。所以只要我的侧边栏留在左边,它看起来就很好看。当侧边栏移动到顶部时,image居中(这是正确的),但是我会在图像前后得到空格,这些空格是容器(侧边栏)的颜色。我要那些空格是黑色的。 我试过宽度:100%。由于图像需要是200px,它将适合容器时,它在左边。但是一旦它移动到顶部,容

  • 问题内容: 我有一个UITabBarController,在其中使用此代码来设置选择指示器图像: 但是该图像不能填充整个空间-请参见下图: 图像只是一个红色的正方形,分辨率为82x49px,但是图像较宽时,它仍然无法填充整个空间。希望你们能提供帮助-谢谢。 问题答案: 如果要在选项卡选择上设置红色图像,我建议您设置活动的选项卡栏项目的背景颜色,根据我的意见,只要您可以使用编码进行编码,为什么要使用

  • 我试图输出一个矩阵:

  • 本文向大家介绍常用的图像空间相关面试题,主要包含被问及常用的图像空间时的应答技巧和注意事项,需要的朋友参考一下 HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV色彩空间(颜色模型) RGB颜色空间是算法处理中应用最多的颜色空间。 HSI颜色空间,色调(Hue)、色饱和度(Saturation或Chroma)和亮度(Intensity或Brightness)

  • 我在垂直链中有两个视图(视图A、视图B)。viewA的纵横比应始终为1:1,而viewB的高度是动态的(可能为400dp,可能为700dp) 预期结果:当 viewB 的高度太大而无法容纳屏幕中的两个视图时,应减小宽度视图 A(保持纵横比)。 实际结果:视图A的宽度总是与父级匹配,如果视图B的高度太大,视图会离开屏幕边界。 注意:最好使用ConstantsLayout,并且不要有嵌套的视图组。