我正在尝试使用3个按钮进行线性布局,中心对齐。
然而,在设置了一些重量并在其间放置空格之后,最后一个按钮就像从布局中删除了1/4,不可见且不可点击。其他部分工作得很好。
很抱歉这是一个新帐户,所以我无法嵌入屏幕截图,请点击以下链接:
请同时查看以下代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:layout_gravity="center"
android:orientation="horizontal"
android:weightSum="4">
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<!--Nesting Structured Layout-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:weightSum="10"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:layout_weight="2">
<!--This is for the Start button-->
<Button
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:text="@string/starting_button"/>
<!--Spacing-->
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<!--This is for the Message button-->
<Button
android:layout_weight="3"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="@string/liitle_message_button"/>
<!--Spacing-->
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<!--This is for the Settings button-->
<Button
android:layout_weight="3"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="@string/settings_button"/>
</LinearLayout>
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
</LinearLayout>
导致问题的代码有什么问题?还有其他更好的方法来实现相同的结果吗?
P.S很抱歉,作为非母语英语用户,我提前道歉,因为它可能有很多语法错误或以不礼貌的方式询问,如果你觉得冒犯,请告诉我。答案 0 :(得分:0)
由于您使用权重和 weightSum 来分配高度,因此“LinearLayout”中的高度是固定的,因此您的最后一个按钮变为超出固定高度。
只需从内部LinearLayout中删除filter: quantityExists()
即可解决您的问题。您可以阅读有关weightSum here的更多信息。
android:weightSum="10"
您可以使用<?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="match_parent"
android:layout_gravity="center"
android:orientation="horizontal"
android:weightSum="4">
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<!--Nesting Structured Layout-->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:layout_weight="2">
<!--This is for the Start button-->
<Button
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:text="b1"/>
<!--Spacing-->
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<!--This is for the Message button-->
<Button
android:layout_weight="3"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="b2"/>
<!--Spacing-->
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<!--This is for the Settings button-->
<Button
android:layout_weight="3"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="b3"/>
</LinearLayout>
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
</LinearLayout>
或space
来集中布局,而不是使用android:gravity
。
同样使用嵌套权重对性能不利。
答案 1 :(得分:0)
由于weightSum,您在LinearLayout的权重总和为10,但是当您在LinearLayout中添加按钮和空格的权重值时,结果为11,因此第二个LinearLayout中的weightSum必须为11。{{3你有一个问题可以给weightSum更多的澄清。 只需你的代码必须是这样的。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:layout_gravity="center"
android:orientation="horizontal"
android:weightSum="4">
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<!--Nesting Structured Layout-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:weightSum="11"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:layout_weight="2">
<!--This is for the Start button-->
<Button
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:text="@string/starting_button"/>
<!--Spacing-->
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<!--This is for the Message button-->
<Button
android:layout_weight="3"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="@string/liitle_message_button"/>
<!--Spacing-->
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<!--This is for the Settings button-->
<Button
android:layout_weight="3"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="@string/settings_button"/>
</LinearLayout>
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
</LinearLayout>
答案 2 :(得分:0)
不要让它变得非常复杂,你可以通过使用相对布局和线性布局
轻松实现<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="START" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="10dp"
android:text="LITTLE MESSAGE" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="SETTINGS" />
</LinearLayout>
</RelativeLayout>
答案 3 :(得分:0)
这是布局..
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:weightSum="9"
android:orientation="vertical">
<Button
android:layout_weight="3"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="START" />
<Button
android:layout_width="wrap_content"
android:layout_weight="3"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="MIDDLE" />
<Button
android:layout_width="wrap_content"
android:layout_weight="3"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="LAST" />
</LinearLayout>
</RelativeLayout>
Attaching image also
答案 4 :(得分:0)
使用此简化代码可以获得相同的结果:
<?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="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="50dp">
<!--This is for the Start button-->
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/starting_button" />
<!--This is for the Message button-->
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/liitle_message_button" />
<!--This is for the Settings button-->
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/settings_button" />
</LinearLayout>
请参阅下面的屏幕截图: