Выровняйте изображение внизу справа в 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

Другие вопросы по тегам