Android-студия горизонтальной компоновки проблемы - PullRequest
0 голосов
/ 06 июня 2018

Итак, я пытаюсь получить что-то вроде этого.

enter image description here

И у меня проблема с выравниванием + и - кнопок в одной строке.

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

enter image description here

Любое решение?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".MainActivity"
    tools:showIn="@layout/activity_main">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="0dp"
        android:orientation="horizontal">

        <Button
            android:id="@+id/suma"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="171dp"
            android:layout_weight="1"
            android:onClick="incrementaContador"
            android:text="+" />

        <Button
            android:id="@+id/resta"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="169dp"
            android:layout_weight="1"
            android:onClick="restaContador"
            android:text="-" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical">

        <TextView
            android:id="@+id/titulo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="15dp"
            android:text="Cafe del dia "
            android:textAlignment="center" />

        <TextView
            android:id="@+id/contadorA"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="64dp"
            android:textAlignment="center"
            android:textSize="24sp"
            android:textStyle="bold" />
    </LinearLayout>

    <Button
        android:id="@+id/reinicio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Reinicio"
        android:onClick="reseteaContador" />
</RelativeLayout>

Ответы [ 5 ]

0 голосов
/ 07 июня 2018

См. На картинке свойство, которое будет помещать текстовое поле под кнопкой.Затем вы получите волнистую линию в красном круге, обозначающую отношение.Как разместить его еще дальше вниз по странице, я все еще работаю.(вы можете использовать отступы, но я уверен, что есть лучшее решение) клик

0 голосов
/ 06 июня 2018

Вместо этого вы должны использовать ConstraintLayout для достижения того, что вы хотите.Это будет более эффективно, чем использование RelativeLayout, особенно вложенных вложенных макетов внутри него.С ConstraintLayout вы можете использовать GUI Builder, чтобы перетаскивать элементы по экрану и получать их с точностью до пикселя.ConstraintLayout может потребовать немного работы, но он действительно мощный, и вы можете получить существенный выигрыш в производительности, если у вас есть сложные иерархии Viewgroup, состоящие из множества вложенных ViewGroups.

Но в качестве решения вашей проблемы здесь обновленный код:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layout_behavior="@string/appbar_scrolling_view_behavior"
                tools:context=".MainActivity"
                tools:showIn="@layout/activity_main">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="horizontal">

        <Button
            android:id="@+id/suma"
            android:layout_width="75dp"
            android:layout_height="75dp"
            android:layout_marginRight="15dp"
            android:onClick="incrementaContador"
            android:textSize="35sp"
            android:text="+" />

        <Button
            android:id="@+id/resta"
            android:layout_width="75dp"
            android:layout_height="75dp"
            android:layout_marginLeft="15dp"
            android:onClick="restaContador"
            android:textSize="35sp"
            android:text="-" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:orientation="vertical">

        <TextView
            android:id="@+id/titulo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="30sp"
            android:text="Contender"
            android:textAlignment="center" />

        <TextView
            android:id="@+id/contadorA"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAlignment="center"
            android:textSize="35sp"
            android:text="4"
            android:textStyle="bold" />
    </LinearLayout>

    <Button
        android:id="@+id/reinicio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="15dp"
        android:layout_centerInParent="true"
        android:layout_alignParentBottom="true"
        android:onClick="reseteaContador"
        android:text="Reinicio"
        />

</RelativeLayout>
0 голосов
/ 06 июня 2018

У вас есть

android:layout_alignParentTop="true" android:layout_marginTop="171dp"

на одной кнопке и

android:layout_alignParentTop="true" android:layout_marginBottom="169dp"

на другой.

Попробуйте это:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".MainActivity"
    tools:showIn="@layout/activity_main">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:orientation="horizontal">

        <Button
            android:id="@+id/suma"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_weight="1"
            android:onClick="incrementaContador"
            android:text="+" />


        <Button
            android:id="@+id/resta"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_weight="1"
            android:onClick="restaContador"
            android:text="-" />


    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical">

        <TextView
            android:id="@+id/titulo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="15dp"
            android:text="Cafe del dia "
            android:textAlignment="center" />

        <TextView
            android:id="@+id/contadorA"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="64dp"
            android:textAlignment="center"
            android:textSize="24sp"
            android:textStyle="bold" />
    </LinearLayout>

    <Button
        android:id="@+id/reinicio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Reinicio"
        android:onClick="reseteaContador"
        />


</RelativeLayout>
0 голосов
/ 06 июня 2018

У вас слишком много вложенных просмотров.Вы можете просто использовать вертикальный линейный макет в качестве родительской видовой группы и горизонтальный линейный макет с весом макета 1 для двух средних кнопок.

Например:

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

<TextView
    android:id="@+id/titulo"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:text="Cafe del dia "
    android:textAlignment="center" />

<TextView
    android:id="@+id/contadorA"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:textAlignment="center"
    android:textSize="24sp"
    android:text="24"
    android:textStyle="bold" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:gravity="center"
    android:layout_weight="1">

    <Button
        android:id="@+id/suma"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="30dp"
        android:onClick="incrementaContador"
        android:text="+" />

    <Button
        android:id="@+id/resta"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="restaContador"
        android:text="-" />

</LinearLayout>

<Button
    android:id="@+id/reinicio"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="Reinicio"
    android:onClick="reseteaContador" />

</LinearLayout>

Лучше всего, если вы будете использовать constraintLayout после того, как научитесь его использовать.

0 голосов
/ 06 июня 2018

Я думаю, тебе нужно что-то подобное.Вставьте этот код в окно вашего кода.

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

    <TextView
        android:id="@+id/titulo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="40dp"
        android:text="Cafe del dia " />

    <TextView
        android:id="@+id/contadorA"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/titulo"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="16dp"
        android:text="4"
        android:textSize="24sp"
        android:textStyle="bold" />

    <LinearLayout
        android:id="@+id/button_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/contadorA"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="60dp"
        android:orientation="horizontal">

        <Button
            android:id="@+id/suma"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="16dp"
            android:onClick="incrementaContador"
            android:text="+"
            android:textSize="30sp" />

        <Button
            android:id="@+id/resta"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="16dp"
            android:onClick="restaContador"
            android:text="-"
            android:textSize="30sp"
            android:textStyle="bold" />
    </LinearLayout>

    <Button
        android:id="@+id/reinicio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="40dp"
        android:onClick="reseteaContador"
        android:text="Reinicio" />
</RelativeLayout>

С моей точки зрения, легче получить подходящий дизайн, кодируя его.У меня что-то подобное.

enter image description here

...