Ta zagadka mnie zastanawia od pierwszych kroków z Androidem. Nie mogę uczynić obu kolumn w 2-kolumnowej tabeli TableLayout dokładnie po 50%.2-kolumna TableLayout z 50% dokładnie dla każdej kolumny
Oto przykład:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="fill_parent" >
<TableLayout
android:id="@+id/tablelayout"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:paddingRight="2dip" >
<TableRow>
<TextView
style="@style/TextViewStandard"
android_layout_span="2"
android:layout_weight="1"
android:text="Bla" />
</TableRow>
<TableRow>
<TextView
style="@style/TextViewStandard"
android:layout_weight="1"
android:text="Name:" />
<EditText
style="@style/EditTextStandard"
android:id="@+id/et_name"
android:layout_weight="1" />
</TableRow>
<TableRow>
<TextView
style="@style/TextViewStandard"
android:layout_weight="1"
android:text="URL:" />
<EditText
style="@style/EditTextStandard"
android:id="@+id/et_url"
android:layout_weight="1" />
</TableRow>
<TableRow>
<Button
style="@style/ButtonStandard"
android:layout_column="0"
android:layout_marginTop="6dip"
android:onClick="onClickOk"
android:text="@android:string/ok" />
</TableRow>
</TableLayout>
</ScrollView>
A oto odpowiednia definicja stylu:
<resources>
<style name="ButtonStandard" parent="@android:style/Widget.Button">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">fill_parent</item>
</style>
<style name="EditTextStandard" parent="@android:style/Widget.EditText">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginLeft">2dip</item>
<item name="android:layout_marginRight">2dip</item>
<item name="android:layout_marginTop">2dip</item>
<item name="android:layout_width">fill_parent</item>
</style>
<style name="TextViewStandard" parent="@android:style/Widget.TextView">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginLeft">2dip</item>
<item name="android:layout_marginRight">2dip</item>
<item name="android:layout_marginTop">2dip</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:textColor">@android:color/white</item>
</style>
</resources>
Staje się to naprawdę pomieszane z CheckBox zaangażowanych.
Co jest nie tak z moją definicją?
Wielkie dzięki z góry. HJW
Co więcej, jeśli to zrobisz, zrzuć 'TableLayout' i przejdź do' LinearLayout'. 'TableLayout' jest przeznaczony do przypadków, w których potrzebujesz systemu Android do obliczania szerokości kolumn w oparciu o zawartość komórki. Jeśli celowo to ignorujesz, możesz zamiast tego używać zagnieżdżonych 'LinearLayouts'. – CommonsWare
@ChristianB: Dzięki za wyjaśnienie. Zawsze myślałem, że z TableLayout musi być coś "nie tak". Co ciekawe wiele wadliwych TableLayouts działa doskonale z emulatorem 2.3. @dbm: Z ustawieniem layout_width na 0dp zniknęły wszystkie widoki podrzędne (TextView/EditText). Dzięki i tak. Sprawdzę rozwiązanie CommonsWares i całkowicie usunę TableLayouts. Nie wiem, do czego są one dobre, jeśli chcesz wiedzieć, co może być w nich wydrukowane i może je zepsuć ... –
@CommonsWare: Nie mogę uwierzyć, dlaczego brałem TableLayouts? Zmiana ich na LinearLayout działała idealnie. Dziękuję Ci bardzo. –