ConstraintLayout提高
把控件放到控件上面
看图就知道,紫色的view 遮住了半边黑色的view
如图,就是topTobuttom=buttomTobuttom=black_view,再加上x轴方向固定
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:background="@color/black"
android:text="TextView"
android:textColor="@color/white"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:background="@color/purple_700"
android:text="TextView"
android:textColor="@color/white"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="@+id/textView2"
app:layout_constraintEnd_toEndOf="@+id/textView2"
app:layout_constraintStart_toStartOf="@+id/textView2"
app:layout_constraintTop_toBottomOf="@+id/textView2"/>
总结来说就是B上靠A边+下靠A边,最后相当于B在A边上,加上B的左靠A的左,右靠A的右就是如图效果
这个也同理,B的左右靠A的右说明B过A右边的延长线,然后加上下固定得到图示效果
Guideline辅助
如图把view放在一个规定的中心,然后让他去startTostart,topTotop,endToend,butttomTobuttom,去固定view
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.15" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.92" />
<TextView
android:layout_width="100dp"
android:layout_height="50dp"
android:background="@color/purple_700"
android:gravity="center"
android:text="center"
android:textColor="@color/white"
android:textSize="24dp"
app:layout_constraintBottom_toTopOf="@+id/guideline3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline2"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
这layout_constraintGuide_percent就是调整占整个布局的百分比,还有一个参数可以调整垂直方向和水平方向
barrier辅助
调整语言的时候,可能会出现控件重叠,用barrier可以把后面的控件推开
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:id="@+id/passwd"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:background="@color/purple_700"
android:gravity="center"
android:text="@string/passwd"
android:textColor="@color/white"
android:textSize="24dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/user" />
<androidx.constraintlayout.widget.Barrier
android:layout_width="0dp"
android:layout_height="0dp"
app:barrierDirection="end"
android:id="@id/barrier"
app:constraint_referenced_ids="user,passwd"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/user"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_marginTop="60dp"
android:background="@color/purple_700"
android:gravity="center"
android:text="@string/user"
android:textColor="@color/white"
android:textSize="24dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/editTextTextPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword"
app:layout_constraintBaseline_toBaselineOf="@id/passwd"
app:layout_constraintEnd_toEndOf="@+id/editTextTextPersonName"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toEndOf="@+id/passwd"
app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName" />
<EditText
app:layout_constraintBaseline_toBaselineOf="@id/user"
android:id="@+id/editTextTextPersonName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="64dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.567"
app:layout_constraintStart_toEndOf="@+id/user"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
通过,这两个来控制,其他控件和平常一样,可以不要把边连到barrier,该怎么样就怎么样
app:barrierDirection="end"//从那边推
app:constraint_referenced_ids="user,passwd"//谁在barrier里面
其中
app:layout_constraintBaseline_toBaselineOf="@id/passwd"
就是edittext的文字和textview对齐
GitHub地址 下载前给star
随便转载,但请注明出处,这是底线