我无法添加另一行按钮

时间:2017-05-30 18:32:44

标签: java android xml layout

我希望我的片段看起来像有3个按钮,可以在手机上垂直和水平填充屏幕。我设法以某种方式做到了,但我无法添加另一行按钮。这是我的布局......我做错了什么?

<?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:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >

            <Button
                android:id="@+id/button1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1" />

            <Button
                android:id="@+id/button2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1" />
            <Button
                android:id="@+id/button3"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1" />


        </LinearLayout>

    </ScrollView>


</LinearLayout>

2 个答案:

答案 0 :(得分:1)

滚动视图只包含一个直接子项,因此您无法直接添加第二个孩子,您必须执行以下操作

    <?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:orientation="vertical">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:fillViewport="true"
            android:layout_weight="1">
     <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                >

                <Button
                    android:id="@+id/button1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="1" />

                <Button
                    android:id="@+id/button2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="1" />
                <Button
                    android:id="@+id/button3"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="1" />


            </LinearLayout>
        <!--add here second row and other continue same -->

    </LinearLayout>
        </ScrollView>

</LinearLayout>

注意:如果scrollview只是您要使用的一个元素,那么您可以通过从root中删除当前的linearlayout来进行根布局,并在同一情况下删除scrollview权重,最好将其最小化布局层次结构到性能改进

答案 1 :(得分:0)

首先注意:滚动视图删除权重属性的效果 从布局中删除滚动视图元素

第二个注释:每个按钮生成

<Button ...
 android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" />

因为0dp让Android系统计算按钮的高度同等