中心视图(CheckBox)在TableRow列中使用layout_weight

Ban*_*eid 6 android android-layout

我有一个我正在膨胀的布局,以便动态地将TableRows添加到TableLayout中.我使用layout_weight将列拉伸到所需的宽度.

该表放在ScrollView中,因此我可以在生成的行之间滚动.我还有一个表头,我把它放在一个LinearLayout上面.我这样做是因为我不想滚动标题.这也是我不使用layout_span而不是layout_weight的原因.

问题是TableRow中的一个视图是一个CheckBox,我希望它居中,但由于layout_width属性为'0',我不能使用layout_gravity ="center"来居中它.

这是xml文件:

<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/order_form_line_TableRow"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/order_table_row_product_description_TextView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_weight="0.22"
        android:maxLines="2"
        android:textSize="18sp" />

    <CheckBox
        android:id="@+id/order_table_row_present_CheckBox"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="0.08" />

    <EditText
        android:id="@+id/order_table_row_facings_EditText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.10"
        android:inputType="number" />

    <EditText
        android:id="@+id/order_table_row_free_cu_given_EditText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.10"
        android:inputType="number" />

    <EditText
        android:id="@+id/order_table_row_order_quantity_EditText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.10"
        android:inputType="number" />

    <EditText
        android:id="@+id/order_table_row_free_order_EditText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.10"
        android:inputType="number" />

    <Spinner
        android:id="@+id/order_table_row_wholesaler_Spinner"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_weight="0.15" />

    <EditText
        android:id="@+id/order_table_row_delivery_date_EditText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.15"
        android:ellipsize="end"
        android:inputType="date"
        android:singleLine="true" />

</TableRow>
Run Code Online (Sandbox Code Playgroud)

这是它的样子: CheckBox不居中

这就是我希望它看起来的样子: 在此输入图像描述

*颜色仅供参考.他们可以被忽略.

如果有人可以提供帮助,我将非常感激.谢谢

Sun*_*har 21

试试这个 :

  <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:gravity="center"
        android:layout_weight="0.08"
        android:layout_height="fill_parent" >

    <CheckBox
        android:id="@+id/order_table_row_present_CheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

  • 这似乎有效,但为什么将复选框封装在另一个布局中是唯一可行的解​​决方案?看起来更像是一个黑客,而不是一个正确的方法. (3认同)