Android 为垂直方向的内部线性布局使用布局权重

Android 为垂直方向的内部线性布局使用布局权重,android,android-layout,checkbox,android-linearlayout,android-checkbox,Android,Android Layout,Checkbox,Android Linearlayout,Android Checkbox,我希望最多有5个复选框,每个复选框占用相等的可用空间。复选框的数量取决于一个问题有多少个答案。所以我动态生成复选框,但最大值是5 我的主线性布局具有水平方向,而2个内部线性布局具有垂直方向。我尝试对两个内部布局使用android:weightSum=5,对每个复选框使用android:layout\u weight=“1”。但它不起作用 <LinearLayout android:id="@+id/layout_multiplechoice" android:layou

我希望最多有5个复选框,每个复选框占用相等的可用空间。复选框的数量取决于一个问题有多少个答案。所以我动态生成复选框,但最大值是5

我的主
线性布局
具有
水平方向
,而2个内部
线性布局
具有
垂直方向
。我尝试对两个内部布局使用
android:weightSum=5
,对每个
复选框使用
android:layout\u weight=“1”
。但它不起作用

 <LinearLayout
    android:id="@+id/layout_multiplechoice"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/layout_question"
    android:layout_margin="5dp"
    android:layout_toEndOf="@+id/iv_image"
    android:layout_toRightOf="@+id/iv_image"
    android:orientation="horizontal">

    <LinearLayout
        android:id="@+id/layout_multiplechoice_solutions"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical"
        android:orientation="vertical"
        android:visibility="invisible"
        android:weightSum="5">

        <CheckBox
            android:id="@+id/cb_solution1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:enabled="false"/>

        <CheckBox
            android:id="@+id/cb_solution2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:enabled="false"/>

        <CheckBox
            android:id="@+id/cb_solution3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:enabled="false"/>

        <CheckBox
            android:id="@+id/cb_solution4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:enabled="false"/>

        <CheckBox
            android:id="@+id/cb_solution5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:enabled="false"/>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layout_multiplechoice_answers"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:orientation="vertical"
        android:weightSum="5">

        <CheckBox
            android:id="@+id/cb_answer1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:buttonTint="@android:color/holo_green_light"/>

        <CheckBox
            android:id="@+id/cb_answer2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:buttonTint="@android:color/holo_green_light"/>

        <CheckBox
            android:id="@+id/cb_answer3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:buttonTint="@android:color/holo_green_light"/>

        <CheckBox
            android:id="@+id/cb_answer4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:buttonTint="@android:color/holo_green_light"/>

        <CheckBox
            android:id="@+id/cb_answer5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:buttonTint="@android:color/holo_green_light"/>
    </LinearLayout>
</LinearLayout>

  • 线性布局中删除
    android:weightSum=“5”
  • android:layout\u weight=“1”
    添加到所有
    复选框中
  • android:layout\u height=“0dp”
    设置为所有
    复选框

  • 然后以编程方式为要隐藏的对象设置可见性。
    复选框父布局中的所有剩余空间将被均匀填充。

    尝试使用下面的XML布局,我做了一些更改。这可能对你有帮助

     <LinearLayout
            android:id="@+id/layout_multiplechoice"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/layout_question"
            android:layout_margin="5dp"
            android:layout_toEndOf="@+id/iv_image"
            android:layout_toRightOf="@+id/iv_image"
            android:orientation="horizontal"
            android:weightSum="2">
    
            <LinearLayout
                android:id="@+id/layout_multiplechoice_solutions"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical"
                android:layout_weight="1"
                android:orientation="vertical"
                android:visibility="invisible"
                android:weightSum="5">
    
                <CheckBox
                    android:id="@+id/cb_solution1"
                    android:layout_width="wrap_content"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:enabled="false" />
    
                <CheckBox
                    android:id="@+id/cb_solution2"
                    android:layout_width="wrap_content"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:enabled="false" />
    
                <CheckBox
                    android:id="@+id/cb_solution3"
                    android:layout_width="wrap_content"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:enabled="false" />
    
                <CheckBox
                    android:id="@+id/cb_solution4"
                    android:layout_width="wrap_content"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:enabled="false" />
    
                <CheckBox
                    android:id="@+id/cb_solution5"
                    android:layout_width="wrap_content"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:enabled="false" />
            </LinearLayout>
    
            <LinearLayout
                android:id="@+id/layout_multiplechoice_answers"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_weight="1"
                android:orientation="vertical"
                android:weightSum="5">
    
                <CheckBox
                    android:id="@+id/cb_answer1"
                    android:layout_width="wrap_content"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:buttonTint="@android:color/holo_green_light" />
    
                <CheckBox
                    android:id="@+id/cb_answer2"
                    android:layout_width="wrap_content"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:buttonTint="@android:color/holo_green_light" />
    
                <CheckBox
                    android:id="@+id/cb_answer3"
                    android:layout_width="wrap_content"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:buttonTint="@android:color/holo_green_light" />
    
                <CheckBox
                    android:id="@+id/cb_answer4"
                    android:layout_width="wrap_content"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:buttonTint="@android:color/holo_green_light" />
    
                <CheckBox
                    android:id="@+id/cb_answer5"
                    android:layout_width="wrap_content"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:buttonTint="@android:color/holo_green_light" />
            </LinearLayout>
        </LinearLayout>
    
    
    
    谢谢,但这些更改没有区别。您还需要将线性布局的
    布局高度设置为大于所有复选框高度总和的值<代码>换行内容
    (第二组复选框现在似乎已将其设置为)将使高度精确到足以容纳所有复选框,而没有任何间距,这不是您想要的。您是指我的第二个内线布局的布局高度吗?