2010-10-06 9 views
12

Ich entwickle eine Android-Anwendung.Richten Sie Tasten in einem TableRow

Ich habe diese:

<?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> 

Ich mag Playgame-Taste auf der linken Seite des Zentrums, und noPlayGame Taste auf der rechten Seite von der Mitte setzen.

Jetzt erscheinen beide auf der linken Seite des TableRow ausgerichtet.

Wie kann ich das tun?

Vielen Dank.

EDIT: Ich habe das komplette Layout und die von Ashay vorgeschlagenen Änderungen hinzugefügt.
2. EDIT:
DIE LÖSUNG
ich TableLayout hinzugefügt haben die folgenden: android:stretchColumns="0,1". Jetzt sind die Buttons in der Mitte ausgerichtet, aber sie füllen ihre Entire Spalte !!!

+1

Wahrscheinlich lohnt es sich, eine eigene Antwort zu posten und sie als beantwortet zu markieren, damit sie nicht in der unbeantworteten Fragenliste auftaucht. –

+1

Ich mag es nicht, meine eigenen Fragen zu beantworten. – VansFannel

Antwort

21

Ich hoffe, das hilft:

<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> 
2

Entfernen Sie diese Zeile <TableRow android:layout_gravity="center"> Und geben android:fill_containt in Tabellenzeile für beide Höhe & Breite

EDITED ANTWORT: Nun, ich bin so leid für die letzten Beiträge Rechtschreibfehler

Durch XML scheint es unmöglich für TableLayout. Sie müssen diese Benutzeroberfläche im Code in oncreate festlegen. In Ihrer Java-Datei können Sie diese unter Verwendung von unten setzen.

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

hier var können den Abstand zwischen diesen zwei Tasten wie 10 oder 30. auch eingestellt werden, wird Ihre xml Änderung erhalten wie folgt:

<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> 

Verfahren ScreenWidth() kann verwendet werden für Breite des Bildschirms durch diese Methoden erhalten

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

android: fill_contain? Ich habe diese "Eigenschaft" nicht in der Android-Dokumentation gefunden. – VansFannel

+0

Ich habe die Frage bearbeiten hinzufügen mehr Details. Deine Antwort funktioniert nicht für mich. – VansFannel

2

Ich habe zwei Dummy-Textansichten hinzugefügt, um meine Schaltfläche in der Mitte auszurichten.

<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

ist dies die einzige Lösung? Ich glaube nicht, dass dies der richtige ist .... Hinzufügen von leeren Textansichten, um eine Schaltfläche zu zentrieren? – Kennethvr

9

ich meinen Code geschrieben, ich hoffe, dass andere Benutzer helfen wird, ihre Probleme (Mitte Inhalt) zu lösen. Ich wollte zwei Schaltflächen in der Tabellenzeile zentrieren, hier ist mein Code, der dieses Problem löst:

Wir geben an, welche Spalten in prop android gestreckt werden: strechColumns = "a, b .." mit Komma-getrennte Liste

 <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> 

Ich hoffe, dass es helfen wird.Sorry für mein Englisch:/

8

Für eine einzige Taste auf einer einzigen Zeile Zentrierung:

<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> 

Nach der oben genannten Antworten bewerten, packte ich ein paar Dinge aus jeder Antwort und das funktionierte für mich.

+0

das half, vielen Dank! –

Verwandte Themen