动态设置HorizontalScrollView中imageview的宽度和高度

需求是这样的:
有两种图片需要显示,一种是640*640,一种是1920*1080的图片。
如果是1920的图片则需要双击切换显示模式,默认按640*640显示1920的中间部分,可以左右滑动查看整个图片。双击后切换到图片宽度填充屏幕宽度。
开始布局是这么写的:

<HorizontalScrollView
   android:id="@+id/horizontalScrollView"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:overScrollMode="never"
   android:scrollbars="none">

   <ImageView
       android:id="@+id/picture"
       android:layout_width="@dimen/x320"
       android:layout_height="@dimen/x320"
       android:scaleType="fitXY"
       android:src="@drawable/no_image_placeholder"/>

</HorizontalScrollView>

使用如下代码进行imageview的大小修改。

ViewGroup.LayoutParams params = picture.getLayoutParams();
params.width = width;
params.height = height;
picture.setLayoutParams(params);

但是效果总是不尽人意,当切换到填充屏幕宽度时,高度是正确的,宽度总是保持之前的模式的宽度。开始想着是不是没有重新计算布局啊。
使用如下

picture.requestLayout();
picture.forceLayout();

都不起作用。后来发现其实很简单,给imageview套一层Fragment布局就OK了。修改后的布局如下。

<HorizontalScrollView
    android:id="@+id/horizontalScrollView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:overScrollMode="never"
    android:scrollbars="none">
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/picture"
        android:layout_width="@dimen/x320"
        android:layout_height="@dimen/x320"
        android:scaleType="fitXY"
        android:src="@drawable/no_image_placeholder"/>
    </FrameLayout>
</HorizontalScrollView>

运行后一切正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值