web-dev-qa-db-fra.com

Aligner les boutons à l'intérieur d'un tablier

Je développe un Android Application.

J'ai ceci:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:Android="http://schemas.Android.com/apk/res/Android"
  Android:layout_width="fill_parent"
  Android:layout_height="200px"
  Android:orientation="vertical">
  <TextView
        Android:id="@+id/gameTitle"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:focusable="false"
        Android:focusableInTouchMode="false"
        Android:gravity="left"
        Android:layout_margin="5px"
        Android:text="aaaaa"/>
  <TextView
        Android:id="@+id/gameDescription"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:focusable="false"
        Android:focusableInTouchMode="false"
        Android:gravity="left"
        Android:layout_margin="5px"
        Android:typeface="sans"
        Android:textSize="16sp"
        Android:textStyle="bold"
        Android:text="dddddd"/>
  <TableLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/ButtonsTable"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal">
        <TableRow
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent">
            <Button
                Android:text="@string/yes"
                Android:id="@+id/playGame"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"/>
            <Button
                Android:text="@string/no"
                Android:id="@+id/noPlayGame"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"/>
        </TableRow>
    </TableLayout>
</LinearLayout>

Je veux mettre le bouton PlayGame sur le côté gauche du centre et le bouton NOPLAYGAME situé à droite du centre.

Maintenant, les deux apparaissent tous deux alignés à gauche du tumerow.

Comment puis-je faire ceci?

Merci.

[~ # ~] éditer [~ # ~ ~]: J'ai ajouté la disposition complète et les modifications suggérées par Ashay.
[.____] 2ème édition:
[.____] la solution
[.____] J'ai ajouté à TableLayout ce qui suit: Android:stretchColumns="0,1". Maintenant, les boutons sont un centre aligné mais ils remplissent leur colonne entièrement !!!

15
VansFannel

J'espère que ça aide:

<TableRow
    Android:id="@+id/tableRow1"
    Android:layout_height="wrap_content"
    Android:layout_gravity="center_horizontal"
    Android:layout_width="wrap_content">
    <Button
        Android:id="@+id/button1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center_horizontal"
        Android:text="@string/stringtxt1"></Button>
    <Button
        Android:id="@+id/button2"
        Android:layout_width="wrap_content"
        Android:text="@string/stringtxt2"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center|center_horizontal"></Button>
</TableRow>
21
Vale

J'ai posté mon code, j'espère que cela aidera les autres utilisateurs à résoudre leurs problèmes (contenu central). Je voulais centrer deux boutons de la rangée de table, voici mon code qui résout ce problème:

nous indiquons quelles colonnes seront étirées dans prop android: strechcolumns = "A, B .." Utilisation de la liste délimitée des virgules

      <TableLayout
        xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/buttonGroup"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:stretchColumns="0,1" > 

        <TableRow>
            <Button
                xmlns:Android="http://schemas.Android.com/apk/res/Android"
                Android:id="@+id/button1"
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content"
                Android:text="@string/button1Name" 
                Android:layout_gravity="right"/>

            <Button
                xmlns:Android="http://schemas.Android.com/apk/res/Android"
                Android:id="@+id/button2"
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content"
                Android:text="@string/button2Name" 
                Android:layout_gravity="left"/>
        </TableRow>
    </TableLayout>

J'espère que cela aidera. Désolé pour mon anglais :/

9
Bobu

Pour centrer un seul bouton sur une seule ligne:

<TableRow Android:id="@+id/rowNameHere"
          Android:layout_height="wrap_content"
          Android:layout_width="wrap_content"
          Android:gravity="center">
    <Button Android:id="@+id/btnDoStuff"
            Android:text="Do Stuff" />
</TableRow>

Après avoir examiné les réponses ci-dessus, j'ai attrapé quelques choses de chaque réponse et cela a fonctionné pour moi.

9
dyslexicanaboko

J'ai ajouté deux textes factices pour aligner mon bouton au centre.

<TableRow>
    <TextView 
        Android:text=""
        Android:layout_weight=".25" 
        Android:layout_width="0dip"         
        />
    <Button 
        Android:id="@+id/buttonSignIn" 
        Android:text="Log In"
        Android:layout_height="wrap_content"
        Android:layout_weight=".50" 
        Android:layout_width="0dip" 
        />
    <TextView 
        Android:text=""
        Android:layout_weight=".25" 
        Android:layout_width="0dip"         
    />
</TableRow>
2
Vivek Iyer

Supprimer cette ligne <TableRow Android:layout_gravity="center"> Et donner Android:fill_containt Dans la ligne de table pour les deux hauteur & largeur

Réponse modifiée: Eh bien, je suis tellement désolé pour les derniers messages faute d'orthographe

Par XML, il semble impossible pour TableLayout. Vous devez définir cette interface utilisateur dans le code sur Oncreate. Dans votre Java fichier, vous pouvez définir ceux en utilisant ci-dessous.

playGame.setWidth(ScreenWidth()/2-var);
noPlayGame.setWidth(ScreenWidth()/2-var);

ici var peut être utilisé pour définir la distance entre ces deux boutons de 10 ou 30. De plus, votre XML sera modifié comme suit:

<TableLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/ButtonsTable"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal">
        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="fill_parent"
            Android:gravity="center">
            <Button
                Android:text="yes"
                Android:id="@+id/playGame"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:gravity="center"/>
            <Button
                Android:text="no"
                Android:id="@+id/noPlayGame"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:gravity="center"/>
        </TableRow>
</TableLayout>

La méthode ScreenWidth() peut être utilisée pour obtenir la largeur de l'écran via ces méthodes

private int ScreenWidth() {
        DisplayMetrics dm=new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        String width=""+dm.widthPixels;
        return Integer.parseInt(width);
}
2
Ashay