当前位置: 首页 > 科技观察

关于设置LinearLayout的权重后不设置宽高为0dp的影响说明

时间:2023-03-15 15:52:38 科技观察

Abstract我平时不太关注LinearLayout布局的权重。设置weight属性后,通常建议将width或height的属性值设置为0dp。有时设置完权重后,还是习惯设置width或者height属性为wrap_content。这会有什么影响吗?做完“掌上平桂”项目后,发现新闻栏目多图显示,总是出现三张图片不能均匀分布的情况。空间的问题,原因之一,每张图片的大小不一样,初步猜测可能是网络加载数据延迟的问题或者ViewHolder类的问题。***发现原因是权重设置的问题。2.多图布局设计使用RelativeLayout布局,嵌套垂直LinearLayout,LinearLayout嵌套TextView和另一个水平LinearLayout,水平LinearLayout放置三张图片,初始水平LinearLayout代码如下:weight="1"android:contentDescription="@string/display_news"android:layout_marginRight="@dimen/hot_news_img_list_left"android:src="@drawable/default_bg"android:scaleType="centerCrop"/>网络加载多图请求后,将获取的图片内容填充到BaseAdapter适配器最后,多张图片分布不均匀,但有些图片分布均匀,这让TeachCourse感觉更奇怪了。布局中设置的权重是相同的。为什么有的三张图在适配的时候会占据不同的空间?通常,遇到问题,TeachCourse的心里都会很不是滋味。根据编程的感觉,我可以肯定是代码某处有问题,否则不会出现这种情况。昨晚感觉应该是BaseAdapter使用ViewHolder设置标签的问题。原来是直接写的:mViewHolder.imageView.setImageBitmap();改为ImageViewimageView=mViewHolder.imageView;imageView.setImageBitmap();认为采集是对象赋值第二种可能是从网络加载图像数据的问题。测试后发现是一样的。后来查了一下布局文件。由于上述布局代码***可能出现在LinearLayout布局中,ImageView标签设置width和height的问题,在上述代码中,将每个ImageView的width和height设置为wrap_content,并且同时把weight设置为1,好像不行。于是尝试去重,发现三张图最后只显示了两张,基本空间分布不均。看来问题大概清楚了,权重设置不合理。将宽度设置的wrap_content更改为0dp。修改后代码为:news_list_item_img_one_iv"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:contentDescription="@string/display_news"android:layout_marginRight="@dimen/hot_news_img_list_left"android:src="@drawable/default_bg"android:scaleType="centerCrop"/>PS:水平LinearLayout布局,设置weight,width要设置为0dp;垂直LinearLayout布局,设置权重,高度要设置为0dp,否则可能会出现宽度或高度分布不均,最终原因是权重设置不生效。调整前后,加载网络图片显示,区别明显