2012-03-05 43 views
6

我有一個佈局,我正在充氣以便動態地將TableRows添加到TableLayout中。我使用layout_weight將列拉伸到所需的寬度。使用TableRow列中的layout_weight的中心視圖(CheckBox)

該表放在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> 

這是它的外觀: CheckBox not centered

這是我希望它看起來: enter image description here

*顏色是表象僅用於目的。他們可以被忽略。

如果有人能幫忙,我將非常感激。謝謝

回答

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> 
+1

謝謝。你讓我走在正確的軌道上。我最終使用了一個帶有layout_width =「0dp」的RelativeLayout,因爲基於0的寬度是必要的,並且RelativeLayout比LinearLayout更輕。它對性能似乎沒有顯着的影響。再次感謝 – Bandreid 2012-03-05 10:19:05

+3

這似乎工作,但爲什麼封裝複選框在另一個佈局唯一的工作解決方案?看起來更像是一種黑客而不是正確的方式來做到這一點。 – 2012-10-31 18:42:15