我正在尝试在线性布局中使用layout_weight,但它没有设置正确的布局。并显示错误。
如何在相对布局的线性布局中显示线性布局错误也是无用的。
我使用根相对布局来创建此线性布局右侧的此代码的第二部分
请在此代码中帮助我。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.android.scorekeepercricketmatch.MainActivity">
<LinearLayout
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:text="@string/team_a"
android:textAllCaps="true" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/score_minus"
android:layout_width="48dp"
android:layout_height="48dp"
android:text="@string/minus" />
<TextView
android:id="@+id/score_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="@string/zero" />
<Button
android:layout_width="48dp"
android:layout_height="48dp"
android:text="@string/plus" />
</LinearLayout>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/six" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/four" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:text="@string/wicket"
android:textAllCaps="true" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/wicket_minus_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:text="@string/minus" />
<TextView
android:id="@+id/wicket_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="@string/zero" />
<Button
android:layout_width="48dp"
android:layout_height="48dp"
android:text="@string/plus" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
答案 0 :(得分:0)
Layout_weight不单独工作,你需要首先通过android初始化父级的权重值:weightSum =&#34; 3&#34;。
正确使用layout_weight的示例:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="2"
android:orientation="horizontal"
>
<TextView
android:layout_weight="1"
android:height="wrap_content"
android:width="0dp"/>
<TextView
android:layout_weight="1"
android:height="wrap_content"
android:width="0dp"/>
</LinearLayout>
这里需要注意的一点是,当你使用layout_weight来划分屏幕时,你应该在该特定字段(高度或宽度)中使用0dp,因为如果你使用wrap_content或match_parent,那么它会让你感到困惑。
答案 1 :(得分:0)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/team_a"
android:textAllCaps="true" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/score_minus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/minus" />
<TextView
android:id="@+id/score_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="@string/zero" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/plus" />
</LinearLayout>
<Button
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.5"
android:text="@string/six" />
<Button
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.5"
android:text="@string/four" />
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/wicket"
android:textAllCaps="true" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<Button
android:id="@+id/wicket_minus_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/minus" />
<TextView
android:id="@+id/wicket_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="@string/zero" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/plus" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
用此替换你的布局。
答案 2 :(得分:0)
我认为我们需要一些关于如何使用weights
的简历:
有两个属性。一个是layout_weight,另一个是weightsum
在container
(a lineaLayout
)中您应该设置layout_weightsum
此属性是您在此weights
中使用的layout
总金额。
例如:您有一个linearlayout
,其中包含两个items
,并且这两个项目必须具有相同的height
。
您将设置总和为2,并为每个布局设置weight
为1(或3-1,5 / 4-2 ......它也接受小数)。
示例:
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
android:weightSum="2">
<!--Item1 (might be TextView, another LL, a RL, Button,...)-->
<Button
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<!--Item2 (might be TextView, another LL, a RL, Button,...)-->
<Button
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
</LinearLayout>
这将导致LinearLayout
有两个项目占用所有可用空间。
现在有些注意事项:具有权重设置的项目应具有宽度(如果是orizontally设置)或height
(如果垂直设置)设置为0dp
。这是因为weight
正在设置此属性。
另一个注意事项是,这不能在RelativeLayouts
中完成,而只能在LinearLayouts
中完成,因为它们没有方向,没有重力,默认情况下没有顺序。
最后要注意的是,布局内的权重总和可以更多,更少或等于您在容器中设置的权重。这仅取决于您的需求。
希望这会有所帮助。了解更多信息you can see the official guide right here
来自doc:
同等重视儿童 要创建一个线性布局,其中每个子节点在屏幕上使用相同的空间量,请将每个视图的android:layout_height设置为“0dp”(对于垂直布局)或将每个视图的android:layout_width设置为“0dp”(用于水平布局)。然后将每个视图的android:layout_weight设置为“1”。
答案 3 :(得分:0)
当父级为layout_weight
时,您无法提供RelativeLayout
。制作父布局Linearlayout,在父级中定义android:weight_sum
并在子级中添加layout_weight
。不要忘记根据布局方向设置孩子的身高或宽度0dp
。