Выравнивание трех кнопок в Table Row Android - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть три кнопки в Actvity внутри Linear Layout.Здесь я хочу, чтобы все кнопки занимали весь стол одинаково.Поэтому я кодировал, как показано ниже.

<Linearlayout>
 ......
 <TableLayout
        android:id="@+id/tableLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:stretchColumns="*">

        <TableRow
            android:id="@+id/tableRow5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <Button
                android:id="@+id/registerTwitter"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Register Twitter" 
                android:gravity="left"/>

            <Button
                android:id="@+id/registerFB"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Register FaceBook" 
                android:gravity="center"/>

            <Button
                android:id="@+id/clearCredentials"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Clear Credentials"
                android:layout_gravity="right" />

        </TableRow>
    </TableLayout>
  </LinearLayout>

Но здесь, когда я дал код, как указано выше, у меня есть три кнопки, занимающие все пространство.

, но выравнивание не является правильным.Они как танцы в воздухе ....

где я допустил ошибку ...

This is the part of output i got

Также обратите внимание, что последняя кнопка не виднаполностью его половина скрыта .....

Я действительно слаб в дизайне пользовательского интерфейса, может кто-нибудь предложить в этом ....

Ответы [ 4 ]

1 голос
/ 14 ноября 2011

Гравитация и layout_gravity - это два разных поля на ваших кнопках.

Гравитация изменяет позиции текста в кнопке, а layout_gravity изменяет положение макета кнопок

У вас есть одна кнопка с использованием layout_gravity идва других используют гравитацию.Убедитесь, что вы используете правильные!

Редактируйте, попробуйте этот код, лучше использовать веса:

<TableRow
    android:id="@+id/tableRow5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <Button
        android:id="@+id/registerTwitter"
        android:layout_height="wrap_content"
        android:text="Register Twitter" 
        android:layout_weight=".3" android:layout_width="match_parent" android:gravity="center_horizontal"/>

    <Button
        android:id="@+id/registerFB"
        android:layout_height="wrap_content"
        android:text="Register FaceBook" 
        android:layout_weight=".3" android:layout_width="match_parent" android:gravity="center_horizontal"/>

    <Button
        android:id="@+id/clearCredentials"
        android:layout_height="wrap_content"
        android:text="Clear Credentials"
        android:layout_gravity="right" android:layout_weight=".3" android:layout_width="match_parent" android:gravity="center_horizontal"/>

</TableRow>

0 голосов
/ 15 ноября 2011

Вы можете использовать его, внедрив относительное расположение вместо линейного, как показано ниже

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
 <Button 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/button1"
  android:layout_alignParentLeft="true"
  android:text="Button1"

  />
 <Button 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/button2"
  android:layout_centerHorizontal="true"
  android:text="Button2"
  />
  <Button 
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:id="@+id/button3"
   android:layout_alignParentRight="true"
  android:text="Button3"
  />

 </RelativeLayout>
0 голосов
/ 14 ноября 2011

Вы смешиваете gravity и layout_gravity. Вы должны использовать layout_gravity. Кроме того, имейте в виду, что значение center означает горизонтальный центр И вертикальный центр. Это может объяснить, почему ваша средняя кнопка выключена вертикально.

0 голосов
/ 14 ноября 2011

Если я вас правильно понимаю, вы просто хотите, чтобы кнопки имели одинаковое горизонтальное пространство подряд, затем попробуйте что-то вроде этого

<?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="fill_parent" >

    ... other views here ...

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom" >

        <Button
            android:id="@+id/registerTwitter"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="Register Twitter" />

        <Button
            android:id="@+id/registerFB"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="Register FaceBook" />

        <Button
            android:id="@+id/clearCredentials"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="Clear Credentials" />
    </LinearLayout>

</LinearLayout>

Это говорит о том, что кнопки начинаются с ширины 0и разделите оставшееся горизонтальное пространство поровну между собой.

...