繁体   English   中英

使ImageView适应Horizo​​ntalScrollView内部的LinearLayout

[英]Fit ImageView to LinearLayout inside HorizontalScrollView

嗨,我有一个hor滚动视图,其中包含一个LinearLayout(方向:hor)。

     <HorizontalScrollView
        android:id="@+id/adImageScroller"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <LinearLayout
            android:id="@+id/adImageViewContainer"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:layout_gravity="left"
            android:background="@color/material_blue_grey_950">
        </LinearLayout>

    </HorizontalScrollView>

我正在用ImageViews动态填充此LinearLayout(所有图像都有随机的长宽比)。

这是填充LinearLayout的onCreateView方法:

for (int i = 0; i < reObjectPicUrls.size(); i++) {
        String url = reObjectPicUrls.get(i).getContent();
        ImageView imageView = new ImageView(getActivity());

        imageView.setId(i);
        imageView.setPadding(2, 2, 2, 2);
        new DownloadImageTask(imageView)
                .execute(url);
        imageView.setScaleType(ImageView.ScaleType.FIT_START); //<-- WORKS IN XML
        imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT)); //<-- WORKS IN XML
        imageViewContainer.addView(imageView);
}

我需要但不能得到的是将所有图像缩放到灰色区域的高度(horizo​​ntalScrollView高度),同时保持其纵横比。

使用options.inSampleSize = 4;缩小所有图像options.inSampleSize = 4;

问题在下图中。 图像没有缩放到适合LinearLayout的高度。 在此处输入图片说明

我尝试了不同的scaleType,但似乎没有任何解决方法。 感谢您提供有关解决此问题的任何提示。

终于破解了。 不必更改布局xml,但确实更改了onCreateView代码,并添加了setAdjustViewBounds(true)也使用FIT_CENTER比例类型。

for (int i = 0; i < reObjectPicUrls.size(); i++) {
        String url = reObjectPicUrls.get(i).getContent();
        ImageView imageView = new ImageView(getActivity());

        imageView.setId(i);
        imageView.setPadding(2, 2, 2, 2);
        new DownloadImageTask(imageView)
                .execute(url);
        imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT));
        imageView.setAdjustViewBounds(true); <--- THIS DID THE TRICK
        imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);

        imageViewContainer.addView(imageView);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM