一葛虐、前言:
1罗售、原因:
我們?cè)谟眉s束布局的時(shí)候锅劝,有時(shí)候?qū)憀ayout_constraintHorizontal_weight屬性沒有任何效果臀稚,這是因?yàn)槲覀儧]有把控件的約束邊界寫好。
效果如圖:
2肋联、解決方案:
下面我們以展示圖2為例子進(jìn)行說明:
我們現(xiàn)在有兩個(gè)控件tv1,tv2和tv3威蕉,三個(gè)控件要進(jìn)行橫向平分,現(xiàn)在要讓他們平分空間必須在他們之間建立鏈條橄仍,怎么建立鏈條呢韧涨,其實(shí)就是要讓他們互相關(guān)聯(lián),每個(gè)控件都要設(shè)置如下屬性:
app:layout_constraintLeft_to...
app:layout_constraintRight_to...
就建立了鏈條侮繁,(我中有你虑粥,你中有我)。 然后再設(shè)置
layout_constraintHorizontal_weight=“1”
這樣就各占一半當(dāng)前空間宪哩。
記住一定要互相關(guān)聯(lián)娩贷,每個(gè)控件都要有相對(duì)于其它控件左右的屬性。
示圖如下:
代碼如下:
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv1"
android:layout_width="0dp"
android:layout_height="200dp"
android:background="#ff0000"
android:gravity="center"
android:text="布局一"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/tv2"
tools:ignore="MissingConstraints" />
<TextView
android:id="@+id/tv2"
android:layout_width="0dp"
android:layout_height="200dp"
android:background="#00ff00"
android:gravity="center"
android:text="布局二"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toRightOf="@+id/tv1"
app:layout_constraintRight_toLeftOf="@+id/tv3"
tools:ignore="MissingConstraints" />
<TextView
android:id="@+id/tv3"
android:layout_width="0dp"
android:layout_height="200dp"
android:background="#0000ff"
android:gravity="center"
android:text="布局三"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toRightOf="@+id/tv2"
app:layout_constraintRight_toRightOf="parent"
tools:ignore="MissingConstraints" />
<androidx.constraintlayout.widget.Group
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="visible"
app:constraint_referenced_ids="tv2"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
說明:如若只有三個(gè)控件顯示Group可以不寫锁孟,Group中的constraint_referenced_ids可以指定控件的顯示和隱藏彬祖。