Выровняйте изображение внизу справа в FrameLayout
Я использую приведенный ниже код для выравнивания изображения внизу справа с полем 20,10 внутри FrameLayout, но оно появляется вверху слева. Где я ошибаюсь?
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);
1 ответ
Проблема в том, что вы меняете гравитацию макета, а это означает, что вы размещаете FrameLayout в правом нижнем углу. Однако возможно, что FrameLayout заполняет весь экран, и в этом случае гравитация макета ничего не меняет. Представьте себе книгу, идеально вписывающуюся в ящик. Независимо от того, как вы держите ящик, книга не перемещается внутри него.
Вам нужно использовать метод setGravity() самого FrameLayout. Это изменит фактическую гравитацию внутри FrameLayout.
Источник: Как программно установить гравитацию и гравитацию макета LinearLayout