@Slavik12

Почему не работает параметр bottom в методе setMargins?

Создаю в коде ImageView и хочу чтобы при старте картинка отобразилась снизу экрана. С помощью метода setMargins я могу выставлять параметры left, top, right, bottom. Если выставить left и top, то картинка двигается. Но если я выставляю left и bottom - params.setMargins(20, 0, 0, 50), то срабатывает только значение для left, а bottom почему то игнорирует.
Вопрос:
1. Как правильно использовать параметр bottom чтобы он приминался ?
2. И за-за чего такое поведение, что на right и bottom нет реакции ?

P.S. Я понимаю что можно выставить значение top и картинка опуститься. Но на разных экранах может отображаться по разному. Я мне, условно, надо именно снизу отступ 50.

Вот сам код
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RelativeLayout layout = (RelativeLayout) findViewById(R.id.RelLayout);

        RelativeLayout.LayoutParams params =
                new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        ImageView imageView = new ImageView(this);
        imageView.setImageResource(R.drawable.ic_launcher_foreground);
        params.setMargins(20, 0, 0, 50);
        imageView.setLayoutParams(params);
        layout.addView(imageView);
    }
}


Вот код из xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/RelLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/purple_200"
    android:orientation="horizontal"/>
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Slavik12 Автор вопроса
В общем сам разобрался. Если кому интересно, то дело в том, что imageView создает отступы вокруг себя относительно своего лейаута. Что по сути и есть назначение метода setMargins. И просто указав для bottom значение не приведет к видимому результату. Но если добавить еще такое значение для top, чтобы картинка опустилась, то можно увидеть, что внизу будет отступ от экрана равный тому значению, который указали в bottom.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы