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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了