Celui-ci me laisse perplexe depuis mes premiers pas avec Android. Je ne peux pas faire les deux colonnes dans un TableLayout à 2 colonnes exactement 50% chacune.
Voici un exemple:
<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>
Et voici la définition de style correspondante:
<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>
Cela devient vraiment gâché par un CheckBox impliqué.
Quel est le problème avec ma définition?
Merci beaucoup d'avance . HJW
Avez-vous essayé de définir l'attribut Android:layout_width
sur 0dp
(et bien sûr de conserver le Android:layout_weight
en tant que 1
) sur les vues enfant?
Je me trouvais dans des scénarios similaires lorsque je souhaitais également répartir l’espace donné de manière égale entre deux vues d’enfant, mais j’ai échoué puisque l’enfant au "contenu plus large" est également devenu plus large que son frère. Cela était dû au fait que l'enfant plus large avait une largeur initiale plus grande. S'assurer que les deux enfants ont commencé avec la même largeur (Android:layout_width="0dp"
sur les deux) garantit également une répartition égale de l'espace entre eux.
C'est comme ça que je formate mes tables uniformément. Ne faites pas partie de votre question, mais couvrez toutes les colonnes Android: layout_span = "2" sur les autres enfants TableRow ne contenant pas l'attribut Android: layout_column. J'espère que cela t'aides.
<TableLayout
Android:id="@+id/tableLayout1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:stretchColumns="0,1">
<TableRow
Android:id="@+id/tableRow1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content">
<TextView
Android:id="@+id/textView1"
Android:layout_column="0">
</TextView>
<TextView
Android:id="@+id/textView2"
Android:layout_column="1">
</TextView>
</TableRow>
</TableLayout>
Je voudrais créer une disposition de table À l'intérieur d'une disposition de cadre tenant votre contrôle. Dans cet exemple, j'ai une disposition de deux colonnes et je mets deux ImageView centrés dans chaque colonne.
<TableLayout
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:stretchColumns="1">
<TableRow>
<FrameLayout
Android:layout_height="wrap_content"
Android:layout_width="0dp"
Android:layout_weight="1">
<ImageView Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/button_wedding_day_cheat_sheet"
Android:id="@+id/buttonWeddingDayCheatSheet"
Android:onClick="onClickWeddingDayCheatSheet"
Android:layout_gravity="center_horizontal">
</ImageView>
</FrameLayout>
<FrameLayout
Android:layout_height="wrap_content"
Android:layout_width="0dp"
Android:layout_weight="1">
<ImageView Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/button_share_favorite_recipe"
Android:id="@+id/buttonShareFavoriteRecipe"
Android:onClick="onClickShareFavoriteRecipe"
Android:layout_gravity="center_horizontal">
</ImageView>
</FrameLayout>
</TableRow>
</TableLayout>
Les colonnes de la table Android s’adaptent toujours à la vue la plus large, quelle que soit la ligne. Il n'y a pas de contrôles explicites ici des colonnes. La vue en grille permet de mieux contrôler la taille de la colonne, telle que: Android: columnWidth = "100dp"
Si les vues de gauche et de droite de la table avaient la même taille, une table centrée pourrait comporter deux colonnes espacées de 50%.