我使用下面的代码将imageview与右下角对齐,FrameLayout内部的边距为20,10,但它出现在左上角。我哪里出错了?
ViewGroup.MarginLayoutParams marginParams = new ViewGroup.MarginLayoutParams(refreshBtn.getLayoutParams());
marginParams.setMargins(0, 0, 20, 10);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(marginParams);
layoutParams.gravity=Gravity.RIGHT|Gravity.BOTTOM;
refreshBtn.setLayoutParams(layoutParams);
答案 0 :(得分:-1)
问题是您正在更改布局重力,这意味着您将FrameLayout定位在右下角。但是,FrameLayout可能会填满整个屏幕,在这种情况下,布局重力并没有真正改变任何东西。想象一本完全适合抽屉的书。无论你如何拿着抽屉,这本书都不会在里面移动。
您需要做的是使用FrameLayout本身的“setGravity()”方法。这将改变FrameLayout内的实际重力。
来源: How to set both gravity and layout gravity of a LinearLayout programatically