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:
Questo è come lo voglio guardare:
* I colori sono per la rappresentazione solo scopo. Possono essere ignorati.
Lo apprezzerei molto se qualcuno potesse aiutare. Grazie
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
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. –