2010-10-06 13 views
12

Zajmuję się tworzeniem aplikacji dla systemu Android.Wyrównywanie przycisków wewnątrz TableRow

mam to:

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

Chcę umieścić przycisk playGame w lewym boku na środku przycisku noPlayGame w prawej części centrum.

Teraz oba są wyrównane na lewo od TableRow.

Jak mogę to zrobić?

Dziękuję.

EDIT: Dodałem kompletny układ i modyfikacje sugerowane przez Ashay.
2-ty EDIT:
ROZWIĄZANIE
Dodałem do TableLayout następujące: android:stretchColumns="0,1". Teraz przyciski są ustawione centralnie, ale wypełniają swoją kolumnę entry!

+1

Prawdopodobnie warto opublikować własną odpowiedź i oznaczać ją jako odpowiedź, tak aby nie pojawiała się na liście pytań bez odpowiedzi. –

+1

Nie lubię odpowiadać na własne pytania. – VansFannel

Odpowiedz

21

Mam nadzieję, że to pomoże:

<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

Usuń ten wiersz <TableRow android:layout_gravity="center"> I dać android:fill_containt w wierszu tabeli zarówno wysokości & szerokości

EDITED ODPOWIEDŹ: Cóż, tak mi przykro z ostatnich postów pisowni Błąd

Poprzez XML wydaje się niemożliwe TableLayout. Musisz ustawić ten interfejs w kodzie w oncreate. W swoim pliku java możesz ustawić te używając poniższego.

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

tutaj var może być używany do ustawiania odległości między tymi 2 przyciski jak 10 lub 30. Również Twój xml dostanie zmianę następująco:

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

Sposób ScreenWidth() mogą być wykorzystywane do uzyskanie szerokości ekranu za pomocą tych metod

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

android: fill_containt? Nie znalazłem tej "własności" na dokumentacji Androida. – VansFannel

+0

Mam edytować pytanie, dodając więcej szczegółów. Twoja odpowiedź nie działa dla mnie. – VansFannel

2

Dodałem dwa atrapy tekstowe, aby wyrównać mój przycisk w środku.

<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

jest to jedyne rozwiązanie? Nie sądzę, że jest to poprawne ... dodanie pustych tekstów do wyśrodkowania przycisku? – Kennethvr

9

napisałem mój kod, mam nadzieję, że pomoże innym użytkownikom rozwiązać ich problemy (Content Center). Chciałem wyśrodkować dwa przyciski w rzędzie tabeli, oto mój kod, który rozwiązuje ten problem:

wskazujemy, które kolumny będą rozciągnięte w pakiecie android: strechColumns = "a, b .." używając listy rozdzielanej przecinkami

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

Mam nadzieję, że to pomoże.Przepraszam za mój angielski:/

8

do centrowania jednego przycisku w jednym wierszu:

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

Po przeanalizowaniu powyższych odpowiedzi, złapałem kilka rzeczy z każdej odpowiedzi i to pracował dla mnie.

+0

to pomogło, wielkie dzięki! –

Powiązane problemy