Как придать цвет фона Группе в Constraintlayout - PullRequest
0 голосов
/ 04 мая 2018

Я сгруппировал 3 вида текста в макете ограничения. У меня есть опыт работы с группой, но она не работает.

<android.support.constraint.Group
                    android:id="@+id/group"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/text_color_3"
                    app:constraint_referenced_ids="price_tv,currency_unit_tv,frequency_tv" />

Есть ли другой раунд, чтобы сделать это.

Ответы [ 5 ]

0 голосов
/ 26 июля 2019

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

Групповое представление не имеет ширины и высоты, поэтому содержимое переноса не будет видно на реальном экране. Предоставьте ограничения для представления группы и установите фоновые атрибуты. Например:

<android.support.constraint.Group
    android:id="@+id/group"
    android:layout_width="0dp" //match constraint
    android:layout_height="0dp" //match constraint
    android:background="@color/text_color_3"
    app:constraint_referenced_ids="price_tv,currency_unit_tv,frequency_tv"
    app:layout_constraintBottom_toBottomOf="@+id/frequency_tv"
    app:layout_constraintEnd_toEndOf="@+id/price_tv"
    app:layout_constraintStart_toStartOf="@+id/price_tv"
    app:layout_constraintTop_toTopOf="@+id/price_tv" />

//below are your TextViews aligned vertically
<TextView android:id="@+id/price_tv"/>
<TextView android:id="@+id/currency_unit_tv" .../>
<TextView android:id="@+id/frequency_tv" .../>

Надеюсь, это поможет :)

0 голосов
/ 18 января 2019

Группа полезна для видимости в ConstraintLayout. ConstraintLayout введен для удаления иерархии нескольких ViewGroups (Layouts).

Мы можем просто использовать для фоновой цели. Если у вас просто есть 3 TextView и вы хотите применить цвет фона к TextView, не добавляйте его в какую-либо ViewGroup (Layout), просто отметьте это:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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:background="#AAA">

  <View
    android:id="@+id/background"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="#FFF"
    app:layout_constraintBottom_toBottomOf="@+id/textView3"
    app:layout_constraintEnd_toEndOf="@+id/textView1"
    app:layout_constraintStart_toStartOf="@+id/textView1"
    app:layout_constraintTop_toTopOf="@+id/textView1" />

  <TextView
    android:id="@+id/textView1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    android:padding="8dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:text="TextView" />

  <TextView
    android:id="@+id/textView2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:padding="8dp"
    app:layout_constraintEnd_toEndOf="@+id/textView1"
    app:layout_constraintStart_toStartOf="@+id/textView1"
    app:layout_constraintTop_toBottomOf="@+id/textView1"
    tools:text="TextView" />

  <TextView
    android:id="@+id/textView3"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:padding="8dp"
    app:layout_constraintEnd_toEndOf="@+id/textView1"
    app:layout_constraintStart_toStartOf="@+id/textView1"
    app:layout_constraintTop_toBottomOf="@+id/textView2"
    tools:text="TextView" />
</android.support.constraint.ConstraintLayout>

Результат:

enter image description here

Вы можете найти источник здесь

0 голосов
/ 27 июля 2018

Согласно документации , Group используется только для управления видимостью набора виджетов.

Вы можете установить фон View и ограничить вид тем, как вы хотите, чтобы фон выглядел.

В приведенном ниже примере кода после установки фона на View с идентификатором background я ограничил верхнюю, левую и правую стороны вида parent и нижнюю часть вида последним TextView в группе, которая в данном случае является TextView с идентификатором textView3. Я также добавил 16dp нижний отступ к textView3, чтобы фон не выглядел странно. Для этого вы также можете использовать Guideline .

Также обратите внимание, что фон представления должен быть добавлен перед группой представлений, которым нужен фон. Если он расположен после группы видов, фон будет нарисован поверх группы (а это не то, что вам нужно).

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    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"
    android:background="#444444">

    <View
        android:id="@+id/background"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#FFFFFF"
        app:layout_constraintBottom_toBottomOf="@+id/textView3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="TextView 1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="TextView 2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView1"/>

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:paddingBottom="16dp"
        android:text="TextView 3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2"/>

</android.support.constraint.ConstraintLayout>

Надеюсь, это поможет.

0 голосов
/ 11 сентября 2018

Группа используется только для управления видимостью ссылочных идентификаторов в приложении: constraint_referenced_ids. Согласно документации . Решение - просто поместить представления в Viewgroup. Мне пришлось поместить все представления в ConstraintLayout, чтобы контролировать видимость + преимущества связывания представлений в CL.

 <android.support.constraint.ConstraintLayout
                android:id="@+id/area_range_constraint"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                visibility = "View.VISIBLE"
                >

                <TextView
                    android:id="@+id/area_title_tv"
                    style="@style/filter_heading_style"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/STR_AREA"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

                <EditText
                    android:id="@+id/area_range_from"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginTop="8dp"
                    android:hint="@string/STR_MIN_AREA"
                    android:inputType="number"
                    android:maxLength="10"
                    android:text='@{searchQueryModel.areaMin==null ? "": StringUtils.getDelimeterString(String.valueOf(safeUnbox(searchQueryModel.getAreaMin())))}'
                    android:textAlignment="center"
                    android:textDirection="anyRtl"
                    android:textSize="14sp"
                    app:layout_constraintEnd_toStartOf="@+id/textView254"
                    app:layout_constraintHorizontal_bias="0.5"
                    app:layout_constraintHorizontal_chainStyle="packed"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/area_title_tv" />

                <EditText
                    android:id="@+id/area_range_to"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="8dp"
                    android:layout_marginStart="8dp"
                    android:hint="@string/STR_MAX_AREA"
                    android:inputType="number"
                    android:maxLength="10"
                    android:text='@{searchQueryModel.areaMax==null ? "": StringUtils.getDelimeterString(String.valueOf(safeUnbox(searchQueryModel.getAreaMax())))}'
                    android:textAlignment="center"
                    android:textDirection="anyRtl"
                    android:textSize="14sp"
                    app:layout_constraintBaseline_toBaselineOf="@+id/textView254"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintHorizontal_bias="0.5"
                    app:layout_constraintStart_toEndOf="@+id/textView254" />

                <TextView
                    android:id="@+id/textView254"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/STR_TO"
                    android:textColor="@color/text_color_3"
                    android:textSize="@dimen/text_size_normal"
                    app:layout_constraintBaseline_toBaselineOf="@+id/area_range_from"
                    app:layout_constraintEnd_toStartOf="@+id/area_range_to"
                    app:layout_constraintHorizontal_bias="0.5"
                    app:layout_constraintStart_toEndOf="@+id/area_range_from" />

                <TextView
                    android:id="@+id/area_range_value_tv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="8dp"
                    android:layout_marginLeft="8dp"
                    android:layout_marginStart="8dp"
                    android:layout_marginTop="8dp"
                    android:text='@{`(` + areaUnit + `)`}'
                    android:textColor="@color/colorPrimary"
                    android:textSize="@dimen/text_size_normal"
                    app:layout_constraintBottom_toBottomOf="@+id/area_title_tv"
                    app:layout_constraintStart_toEndOf="@+id/area_title_tv"
                    app:layout_constraintTop_toTopOf="@+id/area_title_tv" />


            </android.support.constraint.ConstraintLayout>
0 голосов
/ 04 мая 2018

Согласно официальной документации, группа используется только для контроля видимости, и вы не можете изменить фон видов определенной группы.

Документация: Этот класс управляет видимостью набора ссылочных виджетов. Ссылки на виджеты добавляются в список идентификаторов, разделенных запятыми.

Чтобы изменить его динамически, используйте все три TextView.

textView.setBackgroundColor(Color.RED);

или

textView..setBackgroundColor(Color.parseColor("#ffffff"));
...