使用权重平均分配嵌套布局
Equally distribute Nested layouts using weights
我正在尝试平均分配 2 个 RelativeLayout,它是线性布局的子布局。
但是当 Weight = "1" and width = "0" 时。它只是缩小成一条线。
我想要的:水平平均分布
问题:它缩成一条线
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="2" <!-- here is the problem -->
android:layout_below="@id/commentry_text_view"
android:id="@+id/score_and_life"
android:paddingTop="16dp"
android:orientation="horizontal">
<RelativeLayout
android:layout_weight="1dp" <!-- Here Is weight -->
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/score"
style="@style/Header_Text"
android:id="@+id/score_text_view"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/socreDigit"
android:layout_marginTop="3dp"
android:layout_marginLeft="3dp"
style="@style/secondary_text"
android:id="@+id/Score_Digit_Text_View"
android:layout_toRightOf="@id/score_text_view"/>
</RelativeLayout>
<RelativeLayout
android:layout_weight="1dp" <!-- Here Is weight -->
android:layout_marginLeft="150dp"
android:layout_width="0dp"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/life"
style="@style/Header_Text"
android:id="@+id/life_text_view"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lifeDigit"
android:layout_toRightOf="@id/life_text_view"
android:layout_marginTop="3dp"
android:layout_marginLeft="3dp"
style="@style/secondary_text"
android:id="@+id/Life_count_Text_view"/>
</RelativeLayout>
</LinearLayout>
将它们都设置为 layout_weight="1",而不是 1dp。权重值是一个分数,1dp
是以像素为单位的测量值,所以它变得混乱并将其计为零
顺便说一下,您可以删除 weightSum="2"
(这意味着您的全宽权重加起来为 2),并将每个权重设置为 0.5
,即宽度的 50%。哪个对你来说最有意义!
我已通过将两个相对布局的 android:layout_weight="1dp"
更改为 android:layout_weight="1"
并从两个布局中删除不必要的边距来解决您的问题。请查看下面的 XML 解决方案,解决您的问题。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="2"
android:id="@+id/score_and_life"
android:paddingTop="16dp"
android:orientation="horizontal">
<RelativeLayout
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="score"
android:id="@+id/score_text_view"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="socreDigit"
android:layout_marginTop="3dp"
android:id="@+id/Score_Digit_Text_View"
android:layout_toRightOf="@id/score_text_view"/>
</RelativeLayout>
<RelativeLayout
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="rfymkt,"
android:id="@+id/life_text_view"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ejnetjn"
android:layout_toRightOf="@id/life_text_view"
android:layout_marginTop="3dp"
android:layout_marginLeft="3dp"
android:id="@+id/Life_count_Text_view"/>
</RelativeLayout>
</LinearLayout>
我正在尝试平均分配 2 个 RelativeLayout,它是线性布局的子布局。
但是当 Weight = "1" and width = "0" 时。它只是缩小成一条线。
我想要的:水平平均分布
问题:它缩成一条线
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="2" <!-- here is the problem -->
android:layout_below="@id/commentry_text_view"
android:id="@+id/score_and_life"
android:paddingTop="16dp"
android:orientation="horizontal">
<RelativeLayout
android:layout_weight="1dp" <!-- Here Is weight -->
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/score"
style="@style/Header_Text"
android:id="@+id/score_text_view"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/socreDigit"
android:layout_marginTop="3dp"
android:layout_marginLeft="3dp"
style="@style/secondary_text"
android:id="@+id/Score_Digit_Text_View"
android:layout_toRightOf="@id/score_text_view"/>
</RelativeLayout>
<RelativeLayout
android:layout_weight="1dp" <!-- Here Is weight -->
android:layout_marginLeft="150dp"
android:layout_width="0dp"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/life"
style="@style/Header_Text"
android:id="@+id/life_text_view"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lifeDigit"
android:layout_toRightOf="@id/life_text_view"
android:layout_marginTop="3dp"
android:layout_marginLeft="3dp"
style="@style/secondary_text"
android:id="@+id/Life_count_Text_view"/>
</RelativeLayout>
</LinearLayout>
将它们都设置为 layout_weight="1",而不是 1dp。权重值是一个分数,1dp
是以像素为单位的测量值,所以它变得混乱并将其计为零
顺便说一下,您可以删除 weightSum="2"
(这意味着您的全宽权重加起来为 2),并将每个权重设置为 0.5
,即宽度的 50%。哪个对你来说最有意义!
我已通过将两个相对布局的 android:layout_weight="1dp"
更改为 android:layout_weight="1"
并从两个布局中删除不必要的边距来解决您的问题。请查看下面的 XML 解决方案,解决您的问题。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="2"
android:id="@+id/score_and_life"
android:paddingTop="16dp"
android:orientation="horizontal">
<RelativeLayout
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="score"
android:id="@+id/score_text_view"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="socreDigit"
android:layout_marginTop="3dp"
android:id="@+id/Score_Digit_Text_View"
android:layout_toRightOf="@id/score_text_view"/>
</RelativeLayout>
<RelativeLayout
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="rfymkt,"
android:id="@+id/life_text_view"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ejnetjn"
android:layout_toRightOf="@id/life_text_view"
android:layout_marginTop="3dp"
android:layout_marginLeft="3dp"
android:id="@+id/Life_count_Text_view"/>
</RelativeLayout>
</LinearLayout>