Android Table Row 中三个按钮的对齐方式

发布于 2024-12-15 08:11:26 字数 1667 浏览 2 评论 0原文

我的 Actvity 中的线性布局中有三个按钮。 在这里,我希望所有按钮都应该平等地占据整个桌面。 所以我编码如下。

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

但是在这里,当我给出上面的代码时,我得到了三个按钮,占据了整个空间。

但对齐不正确。它们就像在空中跳舞......

我在哪里犯了错误......

这是我得到的输出的一部分

还要注意上面的最后一个按钮完全不可见,它的一半隐藏......

我在 UI 设计方面真的很弱,任何人都可以提出建议......

I have three buttons in my Actvity inside Linear Layout.
Here i wish all buttons should occupy whole tablelayour equally.
So i have coded as below.

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

But here when i gave code as above i got three buttons occupying whole space.

but alignment are not proper. They are like dancing in air....

where did i made mistake...

This is the part of output i got

Also note above Last button is not visible fully its half hidden.....

I'm really weak in UI design can anyone suggest in that ....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

孤凫 2024-12-22 08:11:26

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

Gravity and layout_gravity are two different fields on your buttons.

Gravity alters the positions of the text in the button and layout_gravity alters the buttons layout position

You have one button using layout_gravity and the other two using gravity.
Make sure you use the right ones!

Edit, here try this code, it is better to use weights:

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

幼儿园老大 2024-12-22 08:11:26

您可以混合使用gravitylayout_gravity。您应该使用layout_gravity。此外,请注意 center 值表示水平中心和垂直中心。这可以解释为什么你的中间按钮是垂直关闭的。

You mix gravity and layout_gravity. You should use layout_gravity. Moreover, be aware that the center value means horizontal center AND vertical center. That may explain why your middle button is vertically off.

穿透光 2024-12-22 08:11:26

您可以通过在relativelayout而不是线性布局中实现来使用它,如下所示

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

You can use it by implementing in relativelayout instead of linearlayout as below

<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>
绳情 2024-12-22 08:11:26

如果我理解正确的话,您只是希望按钮在一行中获得相等的水平空间,然后尝试这样的事情

<?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 开始,并划分剩余的水平空间他们之间平等。

If I understand you correctly, you simply want the buttons to be given equal horizontal space in a row, then try something like this

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

This tells the buttons to start out with width 0 and divide up the remaining horizontal space equally amongst themselves.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文