Android-按钮的一部分将从布局中删除

时间:2016-12-25 17:48:34

标签: android android-layout

我正在尝试使用3个按钮进行线性布局,中心对齐。

然而,在设置了一些重量并在其间放置空格之后,最后一个按钮就像从布局中删除了1/4,不可见且不可点击。其他部分工作得很好。

很抱歉这是一个新帐户,所以我无法嵌入屏幕截图,请点击以下链接:

Here is a picture of the apps

请同时查看以下代码

<?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很抱歉,作为非母语英语用户,我提前道歉,因为它可能有很多语法错误或以不礼貌的方式询问,如果你觉得冒犯,请告诉我。

5 个答案:

答案 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

enter image description here

答案 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>

请参阅下面的屏幕截图:

enter image description here