Android. Как разместить позиции в смещении относительно центра / верхнего / нижнего (и т. Д.) Их родителя?

У меня есть 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!"/> 

Или вы можете центрировать свое представление и использовать позиционное позиционирование (вы должны удвоить заполнение, потому что оно переполняется ниже центра экрана)

  <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 цента!