如何将按钮对齐到右侧?

3
请问我该如何将按钮与这三个文本视图对齐,而不是在它们下方? 以下是XML文件:
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:orientation="vertical" android:id="@+id/linearlayout1"
        android:background="#000000">

            <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:id="@+id/textview1"
                android:layout_alignParentLeft="true" android:text="Textview1" />

            <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:text="Textview2"
                android:layout_alignParentLeft="true" android:id="@+id/Textview2" />

            <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:layout_alignParentLeft="true"
                android:text="Textview3" android:id="@+id/Textview3" />

        <RelativeLayout android:id="@+id/relativeLayout2"
            android:layout_width="wrap_content" android:layout_height="wrap_content">
            <Button android:id="@+id/button" android:layout_width="70px"
                android:layout_height="38px" android:text="Button"
                />
        </RelativeLayout>
    </LinearLayout>
</RelativeLayout>
4个回答

6
我认为你应该将三个文本视图和按钮放入RelativeLayout,摆脱LinearLayout。当你只需要一个布局时,使用两个布局是没有意义的,因为每个ViewGroup都会增加布局和绘制的开销。请尝试按如下方式操作:
<RelativeLayout>
    <TextView android:id="@+id/tv1" android:layout_alignParentTop="true" android:layout_alignParentLeft="true"/>
    <TextView android:id="@+id/tv2" android:layout_alignParentLeft="true" android:layout_below="@id/tv1"/>
    <TextView android:id="@+id/tv3" android:layout_alignParentLeft="true" android:layout_below="@id/tv2"/>
    <Button android:id="@+id/btn" android:layout_toRightOf="@id/tv1"/>
</RelativeLayout>

我没有编译过这个代码,但它应该能满足你的需求。可以尝试调整按钮的布局参数(例如将其与父元素顶部和右侧对齐,或者将其放置在任何文本框的右侧等等)。

RelativeLayout非常强大,你真的应该充分利用它的灵活性。


我将按钮设置在 TV3 右侧,然后 TV1 和 TV2 互相覆盖。 - sowhat

4

使用以下属性来设置您的 Button 的位置:android:layout_alignParentRight = "true"

因此,您的 Button 的 xml 代码将会是这样的:

<Button android:id="@+id/button" 
        android:layout_width="70px"
        android:layout_height="38px" 
        android:text="Button" 
        android:layout_alignParentRight="true" <!-- align the Button on the right side -->
 />

那不是只会把按钮放在三个文本框下面,对齐到屏幕的右侧吗? - noobler
可以将按钮对齐到文本视图的“中心”右侧吗?因为我有三个文本视图,按钮以前在底部,现在使用alignParentRight后,它仍然在底部但是对齐到了右侧。 - sowhat
@noobler:这三个TextView被放置在一个LinearLayout上,用户想要将按钮对齐到右侧。 - Houcine
@user1058153:你想让你的按钮紧挨着一个特定的TextView吗?告诉我你想把按钮放在哪个TextView下面,然后只需要移动你的RelativeLayout代码,在你想要的TextView代码之后放置它即可 :) - Houcine

0

你也可以使用:

android:layout_gravity="end"

-1

根据您的问题标题,你只是想将按钮对齐到屏幕右侧。在那种情况下,其他答案都可以。但是,在您的问题中,您说您希望您的按钮“旁边”放置Textviews。在这种情况下,请阅读以下内容:

您的外部LinearLayout是垂直方向的,因此其所有直接子项都将位于彼此下方。取决于您希望它看起来的确切方式,您可能需要在您当前的LinearLayout之外或内部嵌套一个水平的LinearLayout

RelativeLayout相对于其子项定位,而不是相对于其外部的东西定位。也许您想要类似以下的东西(我没有尝试编译这个):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:orientation="horizontal" android:id="@+id/linearlayout1"
        android:background="#000000">

    <Button android:id="@+id/button" android:layout_width="70px"
        android:layout_height="38px" android:text="Button" />

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent" android:layout_height="fill_parent"
            android:orientation="vertical" android:id="@+id/linearlayout1"
            android:background="#000000">

            <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:id="@+id/textview1"
                android:layout_alignParentLeft="true" android:text="Textview1" />

            <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:text="Textview2"
                android:layout_alignParentLeft="true" android:id="@+id/Textview2" />

            <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:layout_alignParentLeft="true"
                android:text="Textview3" android:id="@+id/Textview3" />
    </LinearLayout>
</LinearLayout>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接