LinearLayout将孩子放在右侧

时间:2014-08-21 09:09:37

标签: android layout android-linearlayout android-relativelayout layout-gravity

我正在尝试使用水平方向的线性布局中的textview和按钮。 textview应出现在开头,按钮应出现在结尾处。我认为将重力直接按到按钮就可以了,但按钮不会移动到右侧。我在想我是否应该使用相对布局?

enter image description here

<\LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:orientation="horizontal">

    <TextView
        android:id="@+id/productPriceTextView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Rs 3579.0" 
        />

    <Button
        android:id="@+id/buyNowButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="Buy Now" />
<\/LinearLayout>

8 个答案:

答案 0 :(得分:9)

我的方式(使用RelativeLayout):

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
    <TextView
        android:id="@+id/productPriceTextView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="Rs 3579.0"
    />
    <Button
        android:id="@+id/buyNowButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="Buy Now"
    />
</RelativeLayout>

看看我如何明确地将TextView与父母的左侧对齐,将按钮与母亲的右侧对齐

然后,您可以通过设置:

将TextView垂直居中于RelativeLayout
android:layout_centerVertical="true"
TextView本身中的

答案 1 :(得分:6)

尝试以下xml:

   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/productPriceTextView1"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:text="Rs 3579.0"
        />

    <Button
        android:id="@+id/buyNowButton1"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="Buy Now" />
</LinearLayout>

答案 2 :(得分:4)

使用LinearLayout有一种更简洁的方法:只需给左元素宽度为0,权重为1,并在wrap_content上设置正确的宽度。就是这样!

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:orientation="horizontal">

    <TextView
        android:id="@+id/productPriceTextView1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Rs 3579.0" 
        />

    <Button
        android:id="@+id/buyNowButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Buy Now" />
</LinearLayout>

答案 3 :(得分:1)

有两种方法:

1)您可以使用RelativeLayoutButton拖到您想要的地方..

2)您可以使用LinearLayout的重量属性。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
    android:id="@+id/productPriceTextView1"
    android:layout_width="0dp"
    android:layout_weight="0.8"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    android:text="Rs 3579.0"
    />

<Button
    android:id="@+id/buyNowButton1"
    android:layout_width="0dp"
    android:layout_weight="0.2"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:text="Buy Now" />
</LinearLayout>

答案 4 :(得分:1)

请改用此布局..

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
android:id="@+id/productPriceTextView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Rs 3579.0"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />



<Button
android:id="@+id/buyNowButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Buy Now"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />

</RelativeLayout>

答案 5 :(得分:0)

android:layout_gravity="end"用于线性布局,将所有元素移至右侧

答案 6 :(得分:0)

此处不依赖于使用RelativeLayout的另一个简单解决方案是使用view在两个元素之间使用空layout_weight来确保它填充空白区域。

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" 
android:orientation="horizontal">

  <TextView
      android:id="@+id/productPriceTextView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Rs 3579.0"/>

  <view
      android:layout_height="0dp"
      android:layout_width="0dp"
      android:layout_weight="1" />

  <Button
      android:id="@+id/buyNowButton1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="right"
      android:text="Buy Now" />
</LinearLayout>

通过这种方式,您只需使用LinearLayout即可实现所需目标,现在,我不确定这是否比使用RelativeLayout更有效。但对我来说,在这样一个简单的布局中去找亲戚总觉得有点过分。

答案 7 :(得分:0)

只需添加宽度为0dp,重量为1的空白视图

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:orientation="horizontal">

    <TextView
        android:id="@+id/productPriceTextView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Rs 3579.0" 
        />
     <View
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="1"/>

    <Button
        android:id="@+id/buyNowButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        
        android:text="Buy Now" />
</LinearLayout>