2012-03-05 14 views
6

Ho un layout che sto gonfiando per aggiungere dinamicamente TableRows in un TableLayout. Io uso layout_weight per allungare le colonne alla larghezza desiderata.Center View (CheckBox) che utilizza layout_weight nella colonna TableRow

Il tavolo è inserito in un ScrollView così posso scorrere tra le righe generate. Ho anche un'intestazione di tabella che ho aggiunto a LinearLayout. L'ho fatto perché non voglio scorrere l'intestazione. Questo è anche il motivo per cui non uso layout_span invece di layout_weight.

Il problema è che una delle visualizzazioni nel TableRow è un CheckBox e lo voglio centrato, ma poiché l'attributo layout_width è '0' non posso usare layout_gravity = "center" per centrarlo.

Ecco il file 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> 

Questo è come appare: CheckBox not centered

Questo è come lo voglio guardare: enter image description here

* I colori sono per la rappresentazione solo scopo. Possono essere ignorati.

Lo apprezzerei molto se qualcuno potesse aiutare. Grazie

risposta

21

provare questo:

<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

Grazie. Mi hai impostato sulla strada giusta. Ho finito per utilizzare un RelativeLayout con layout_width = "0dp" poiché era necessaria una larghezza basata su 0 e RelativeLayout è più leggero di LinearLayout. Non sembra avere un impatto notevole sulle prestazioni. Grazie ancora – Bandreid

+3

Questo sembra funzionare, ma perché incapsulare la casella di controllo in un altro layout è l'unica soluzione funzionante? Sembra più un hack che un modo appropriato per farlo. –

Problemi correlati