Избегайте перекрытия макета ограничений Android

#android #xml #android-constraintlayout #overlap

#Android #xml #android-constraintlayout #перекрытие

Вопрос:

Я хотел бы избежать записи «Статуса» в двух строках, я использую компоновку ограничений. Я просмотрел другие подобные вопросы, но не нашел, как решить проблему.

Вот мой код:

 <?xml version="1.0" encoding="utf-8"?><!--
  As recommended by Google, we use a ConstraintLayout
  as the root element
  We add a padding all around using the padding attribute
-->
<androidx.constraintlayout.widget.ConstraintLayout
    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"
    android:padding="20dp"
    >

    <!--
    * We use the hint attribute to display the "type" string
    * The type string has been extracted into a dedicated file
    * The width is "0dp" because the "match_parent" value cannot be
    used with the constraintLayout
    * We use the inputType attribute to display the best keyboard
    to the user
    *
    -->

    <TextView
        android:id="@ id/status_label"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toTopOf="@id/price"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintEnd_toStartOf="@id/status"
        android:text="Status :"
        android:textStyle=""
        android:textSize="18sp"
        />

    <Spinner
        android:id="@ id/status"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toEndOf="@id/status_label"
        app:layout_constraintTop_toTopOf="@id/status_label"
        />

</androidx.constraintlayout.widget.ConstraintLayout>
 

А вот и вид из окна:
Вид

Надеюсь, вы предоставите несколько решений.

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

1. Оберните свой textview и spinner в linearlayout, а также соответствующим образом установите отступы / поля.

2. Вы можете сделать ширину status_label до wrap_content

3. Это также может сработать, если вы просто удалите приложение:layout_constraintEnd_toStartOf=»@id / status»

4. @KrishnaSharma да, это тоже работает

Ответ №1:

Вы можете сделать ширину status_label до wrap_content

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

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

Ответ №2:

 <androidx.constraintlayout.widget.ConstraintLayout
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"
android:padding="20dp"
>

<!--
* We use the hint attribute to display the "type" string
* The type string has been extracted into a dedicated file
* The width is "0dp" because the "match_parent" value cannot be
used with the constraintLayout
* We use the inputType attribute to display the best keyboard
to the user
*
-->

<TextView
    android:id="@ id/status_label"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
  
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintEnd_toStartOf="@id/status"
    android:text="Status :"
    android:textStyle=""
    android:textSize="18sp"
    />

<Spinner
    android:id="@ id/status"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintStart_toEndOf="@id/status_label"
    app:layout_constraintTop_toBottomOf="@id/status_label"
    />
 

</androidx.constraintlayout.виджет.ConstraintLayout>
И здесь

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

1. Это не работает, текстовое представление статуса просто немного уменьшается, но ничего не меняется в отношении перекрытия