Как сделать макет в Android studio?

#java #android #android-studio #button #layout

#java #Android #android-studio #кнопка #макет

Вопрос:

Я пытаюсь выполнить действие, которое должно выглядеть следующим образом: здесь

Проблема в том, что при запуске приложения он не становится одинаковым. Кнопки вырезаны или текст вырезан. И если я изменю положение одной кнопки, все окажется в верхнем левом углу. Мой вопрос: что мне нужно сделать, чтобы все получило нужную мне позицию? Я использовал относительный макет. Может быть, это проблема?

 <?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" >

    <Button
        android:id="@ id/button3"
        android:layout_width="245dp"
        android:layout_height="68dp"
        android:layout_below="@ id/button"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="83dp"
        android:layout_marginTop="26dp"
        android:layout_marginEnd="83dp"
        android:layout_marginBottom="238dp"
        android:text="Info"
        android:textColor="@color/colorPrimary"
        android:textSize="24sp"
        android:textStyle="normal" />

    <Button
        android:id="@ id/button"
        android:layout_width="245dp"
        android:layout_height="68dp"
        android:layout_centerInParent="true"
        android:text="Kartenansicht"
        android:textColor="@color/colorPrimary"
        android:textSize="24sp"
        android:textStyle="normal" />

    <TextView
        android:id="@ id/textView"
        android:layout_width="wrap_content"
        android:layout_height="115dp"
        android:layout_above="@ id/button2"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_marginStart="71dp"
        android:layout_marginTop="112dp"
        android:layout_marginEnd="73dp"
        android:layout_marginBottom="18dp"
        android:text="Um zu überprüfen, ob Sicherheitskameras in der Nähe sind, bitte hier drücken:"
        android:textSize="20sp" />

    <Button
        android:id="@ id/button2"
        android:layout_width="244dp"
        android:layout_height="62dp"
        android:layout_above="@ id/button"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true"
        android:layout_marginStart="83dp"
        android:layout_marginEnd="84dp"
        android:layout_marginBottom="24dp"
        android:text="Start"
        android:textColor="@color/colorPrimary"
        android:textSize="24sp" />
</RelativeLayout>
 

Комментарии:

1. 1. Установка фиксированной ВЫСОТЫ для кнопок приведет к неправильному поведению (обрезанный текст в качестве основного) много раз. Вместо этого используйте WRAP_CONTENT . 2. RelativeLayout является «устаревшим» и был заменен более новым ConstraintLayout

Ответ №1:

У вас большой беспорядок в вашем макете. Например:

     android:layout_alignParentStart="true"
    android:layout_alignParentEnd="true"
 

Эти 2 параметра не могут сосуществовать.
Для желаемого макета вы должны использовать LinearLayout с ориентацией, установленной на вертикальную. Таким образом, все, что вам нужно будет сделать, это написать свои объекты пользовательского интерфейса на 1 ниже другого, и они будут размещены на 1 выше другого. Чтобы центрировать их, вы можете использовать gravity и layout_gravity

             android:layout_gravity="center"
            android:gravity="center"
 

И это должно быть все.

Редактировать: просто чтобы вы знали, относительный макет в основном помещает любой данный объект в позицию 0,0 макета. Если вы создадите несколько объектов, они будут размещены один поверх другого.

Ответ №2:

используйте constraintlayout и, например, вы даете каждому виду ограничение на начало и конец после того, как вы можете установить ширину в 0dp

Комментарии:

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

2. Хорошо, теперь я понял. Мне пришлось добавить ограничения. Спасибо

Ответ №3:

если вы хотите создать дизайн путем перетаскивания, было бы лучше использовать макет ограничения вместо относительного макета, но если вы все равно хотите использовать относительный макет, вам следует использовать «centerInParent = «true» «в средней кнопке и установить «layout_above = «@ id /your_centered_view_id» для кнопки выше и «layout_below = «@ id /your_centered_view_id» «.