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

Intereting Posts
Android POI: сбой при использовании autoSizeColumn () Значения китайских локалей-zh_CN дают ошибку на Eclipse Не удалось инициализировать LoginButton Facebook-sdk для Android Как установить цвет текста веб-обозревателя в android Как мне общаться между действиями? Лучшая практика для постоянного уведомления о местоположении пользователя Android Не удается получить доступ к org.apache.http.client.HttpClient Как воспроизводить звук при нажатии кнопки на Android? Как добавить дополнительный параметр тестового прогона в тестовые тесты Android Studio 2.3 Android: Почему я не могу переопределить setFrame из представления? Android Studio 0.5.0 – без автоматического завершения кода и распознавания синтаксиса ошибок после обновления Как отключить строку состояния или панель уведомлений, но не отключить строку заголовка в android? Регистрация GCM с двумя разными идентификаторами работы Изменение первичного ключа таблицы в SQLite Ошибка загрузки / обновления Android sdk