声明性地将宽度分配给一半可用的屏幕宽度

是否可以指定一个小部件宽度的一半可用的屏幕宽度,并使用声明xml?

如果你的小部件是一个button:

<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:weightSum="2" android:orientation="horizontal"> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="somebutton"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> 

我假设你想要你的小部件占用一半,另一个部件占用另一半。 技巧是使用LinearLayout,在两个小部件上设置layout_width="fill_parent" ,并在两个小部件layout_width="fill_parent" layout_weight设置为相同的值。 如果有两个具有相同权重的小部件,则LinearLayout将拆分这两个小部件之间的宽度。

将宽度设为0dp,以确保其大小与其权重完全相同,这将确保即使子视图的内容变得更大,它们仍然会被限制在一半(按权重)

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1" > <Button android:layout_width="0dp" android:layout_height="wrap_content" android:text="click me" android:layout_weight="0.5"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="Hello World" android:layout_weight="0.5"/> </LinearLayout> 

单个项目在中心的另一种方式,填满了一半的屏幕:

 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <View android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="1" android:visibility="invisible" /> <EditText android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" /> <View android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="1" android:visibility="invisible" /> </LinearLayout> 

使用约束布局

  1. 添加指南
  2. 将百分比设置为50%
  3. 将您的观点限制在指导方针和家长面前。

在这里输入图像描述

如果您在更改百分比时遇到问题,请参阅此答案 。

XML

 <?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" tools:layout_editor_absoluteX="0dp" tools:layout_editor_absoluteY="81dp"> <android.support.constraint.Guideline android:id="@+id/guideline8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.5"/> <TextView android:id="@+id/textView6" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:text="TextView" app:layout_constraintBottom_toTopOf="@+id/guideline8" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> </android.support.constraint.ConstraintLayout> 
 <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textD_Author" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Author : " android:textColor="#0404B4" android:textSize="20sp" /> <TextView android:id="@+id/textD_Tag" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Edition : " android:textColor="#0404B4" android:textSize="20sp" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:weightSum="1" > <Button android:id="@+id/btbEdit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.5" android:text="Edit" /> <Button android:id="@+id/btnDelete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.5" android:text="Delete" /> </LinearLayout> </LinearLayout>