У меня есть RelativeLayout
с видами, выровненными относительно него (их родителя), используя (например):
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
textView.setLayoutParams(layoutParams);
и теперь мне интересно, как я могу расположить вид относительно нижней части его родителя, но со смещением (например, 100 пикселей над нижней частью, 20 пикселей слева и т.д.), или аналогично с центром (30 пикселей под центром)?
Я пробовал устанавливать поля вида (например):
layoutParams.setMargins(140, 0, 0, 0);
перед применением его к textView
, но это не сработало.
Это кажется чрезвычайно полезным способом выравнивания представлений для различных размеров экрана.
Для меня важно добиться этого в коде, без использования xmls.
Спасибо!
у вас есть 2 способа, проще всего использовать пустой якорный вид, расположенный в центре
<View
android:id="@+id/anchor"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerInParent="true" />
<TextView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/anchor"
android:layout_marginBottom="20dp"
android:text="hello world!"/>
Или вы можете центрировать свой вид и использовать позиционирование с помощью pading por (вы должны удвоить используемый отступ, потому что он переполняется ниже центра экрана)
<TextView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:paddingBottom="40dp"
android:text="hello world!"/>
Я только что начал программировать на Android сегодня вечером, так что это может быть старая или плохая идея ... но я возился с вышеуказанным ответом и обнаружил, что расположение элемента ниже моего другого элемента вызывает проблему - либо заполнение будет в путь или что-то. Вот что я в итоге сделал.
Используя технику якоря, я также присвоил якору высоту (вдвое больше, чем нужно), а затем выровнял элемент по верху. Таким образом, это было бы в середине обзора минус половина высоты якоря!
<View
android:id="@+id/anchor"
android:layout_width="0dp"
android:layout_height="200dp"
android:layout_centerInParent="true" />
<TextView
android:id="@+id/heading"
android:text="@string/heading"
android:textColor="@android:color/white"
android:textSize="24sp"
android:layout_alignTop="@id/anchor"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/subheading"
android:text="@string/subheading"
android:textColor="@android:color/white"
android:textSize="12sp"
android:layout_below="@+id/heading"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Другой ответ очень помог, но я просто хотел дать свои 2 цента!