Когда я переключаюсь на RelativeLayout, все, что я вкладываю в дизайн, отображается в верхнем левом углу экрана. - PullRequest
0 голосов
/ 16 февраля 2019

Я перешел с ConstraintLayout на RelativeLayout в Android Studio, теперь все, что я вкладываю в дизайн, почему-то отображается в верхнем левом углу.

Я могу перетащить и переместить его в Design, но написание отступов очень трудоемко и утомительно.Я даже изменил значение по умолчанию на RelativeLayout, но ничего не изменилось.

    <?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent" 
   android:layout_height="match_parent">

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />

Я хочу изменить их положение, перетаскивая их на экран, чтобы они не застряли в верхнем левом углуэкран.

1 Ответ

0 голосов
/ 16 февраля 2019

Да, это свойство RelativeLayout.

RelativeLayout требует, чтобы вы указали отношение положения между виджетами.Если вы не укажете отношение позиции для всех виджетов, то все виджеты свернутся в (0, 0) родительского элемента, что приведет к тому, что вы видите,

все, что я положил в дизайн, будет показанов верхнем левом углу.

Чтобы указать связь между виджетами, вы можете использовать свойство android:layout_* series, например:

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" /> <!-- this will at top left -->

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/textView"
    android:text="Button" /> <!-- this will at right of textView -->

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toBottomOf="@id/button"
    android:text="TextView" /> <!-- this will below button -->

Вы можете попытаться указать их в Design Layout, однако я обнаружил, что это немного сложно.

  1. Нажмите на виджет, тогда вокруг этого виджета будут круги.
  2. Нажмите на один круг, удерживайте.Все виджеты будут иметь круги вокруг.
  3. Перетащите этот круг на круги другого виджета, это создаст связь между ними, если вы используете ConstraintLayout.
  4. Однако, похоже,это невозможно сделать, если вы используете RelativeLayout, поскольку все виджеты свернуты в одну и ту же позицию.

Подробнее см. Руководство по Android для RelativeLayout .

...