Bagaimana cara menempatkan tampilan teks di tengah tata letak jika visibilitas Textview kedua hilang?

Saya telah melampirkan tata letak yang saya gambar dengan tangan.

Saya memiliki dua Textview di dalamnya, katakanlah ConstraintLayout

Saya ingin menulis xml bahwa dalam situasi di mana ada dua TextViews yang terlihat mengatur margin dan batasan sesuai dengan angka di tangkapan layar tetapi jika visibilitas TextView2 hilang, saya ingin meletakkan TextView1 di tengah tata letak.

Dapatkah seseorang membantu saya dengan itu?

  <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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">

    <TextView>
        android:id="@+id/TextView1”
        android:layout_width=“100dp”
        android:layout_height="wrap_content"
        android:text=“TextView”1
        app:layout_constraintStart_toStartOf="parent"
        android:layout_marginStart=“16dp"
        />

 <TextView>
        android:id="@+id/TextView2”
        android:layout_width=“100dp”
        android:layout_height="wrap_content"
        android:text=“TextView”1
        app:layout_constraintEnd_toEndOf=“parent”
        app:layout_constraintStart_toStartOf=“@id/TextView1”
        android:layout_marginStart=“20dp"
        android:layout_marginEnd“8dp"
        />
</androidx.constraintlayout.widget.ConstraintLayout>

enter image description here

1
Eitanos30 27 Mei 2021, 12:37

4 jawaban

Jawaban Terbaik

Tempatkan dua TextViews di rantai horizontal< /a> dengan gaya rantai diatur ke spread_inside. Sekarang, ketika TextView kanan disetel untuk hilang, TextView kiri mengasumsikan batasan kanan TextView kanan dengan margin baru disetel ke 16dp (app:layout_goneMarginEnd="16dp" ).

Lihat Margin saat terhubung ke widget GONE.

<androidx.constraintlayout.widget.ConstraintLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/TextView1"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:text="TextView1"
        app:layout_constraintEnd_toStartOf="@+id/TextView2"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_goneMarginEnd="16dp" />

    <TextView
        android:id="@+id/TextView2"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:text="TextView2"
        app:layout="@id/TextView1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/TextView1"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
1
Cheticamp 27 Mei 2021, 10:10

Anda harus tata letak linier horizontal.

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
        android:layout_centerHorizontal="true">
     <TextView>
        android:id="@+id/TextView1”
        android:layout_width=“match_parent”
        android:layout_height="wrap_content"
        android:text=“TextView”1
        android:layout_marginRight="20dp"
 android:layout_weight="0.5"
        
        />

 <TextView>
        android:id="@+id/TextView2”
        android:layout_width=“match_parent”
        android:layout_height="wrap_content"
        android:text=“TextView”1
         android:layout_marginLeft="20dp"
 android:layout_weight="0.5"
       
        />

    </LinearLayout>

seperti ini Sangat sederhana dibandingkan jawaban lainnya

0
ogi_plus 27 Mei 2021, 11:28

Anda dapat menggunakan FlexboxLayout untuk jenis persyaratan ini

<com.google.android.flexbox.FlexboxLayout
    android:id="@+id/flexBox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/_15sdp"
    android:background="@null"
    app:justifyContent="space_around">

        <androidx.appcompat.widget.AppCompatTextView
            android:id="@+id/ContactTitle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"/>

        <androidx.appcompat.widget.AppCompatTextView
            android:id="@+id/nameTitle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"/>

</com.google.android.flexbox.FlexboxLayout>

Ketergantungan - implementation 'com.google.android:flexbox:2.0.1'

1
AllwiN 27 Mei 2021, 11:36

menambah atau menghapus properti visibilitas

 <LinearLayout
    android:layout_width="match_parent"
    android:weightSum="2"
    android:layout_height="wrap_content">
    <TextView
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_height="wrap_content"
        android:text="Hello1"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:visibility="gone"
        android:layout_height="wrap_content"
        android:text="Hello2"/>

    </LinearLayout>
1
Code Scan 27 Mei 2021, 10:07