Android动态设置Margin不生效解决

一、说明

动态设置margin不生效的原因有很多种,但归结起来就是一种,你没有把属性设置全。因为我们在xml中写布局文件的时候,你的布局是即时可见的,而你用纯代码去码布局很可能会忽略一些东西,导致一些东西不生效,其实跟xml中是一个道理的,不生效的原因也是一致的,xml中码不好也不生效的,只不过xml的即时可见性让你码起来得心应手,很少会出低级错误。

二、问题解决示例

        <ImageView
            android:layout_width="14dp"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_marginRight="28dp"
            android:src="@drawable/triangle_down_width14_height6" />

比如以上这个,我想动态设置距离右边界的距离,通过layoutParams的setMargins属性来设置,但是设置完后却不生效,我的代码是这样写的:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
float screenWidth = DisplayUtil.getScreenWidth(this);
layoutParams.setMargins(0, 0, screenWidth * 0.1, 0);
bubbleArrow.setLayoutParams(layoutParams);

对比以上代码,有没有发现问题所在,如果不仔细的话一看没什么问题,但是仔细看就会发现没有针对android:layout_gravity=”right”的设置,因为你没有设置它是右对齐,默认会是左对齐,这样你直接设置marginRight自然是不会生效的。

三、总结

如果你发现在xml布局中是正常的,而动态设置不正常,你可以对比一下是不是少设置了什么属性,或者哪个属性值设置错了,它的不生效一定是有原因的,耐心一点,问题将迎韧而解。

猜你喜欢

转载自blog.csdn.net/haha223545/article/details/81066479