代码之家  ›  专栏  ›  技术社区  ›  Vihaan Verma

LinearLayout将孩子放在右侧

  •  7
  • Vihaan Verma  · 技术社区  · 10 年前

    我试图在水平方向的线性布局中有一个文本视图和一个按钮。文本视图应该出现在开头,按钮应该出现在结尾。我以为给按钮赋予重力就行了,但按钮没有向右侧移动。我在想我是否应该使用相对布局?

    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 回复  |  直到 10 年前
        1
  •  13
  •   Phantômaxx    5 年前

    我的方式(使用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显式对齐到父项的左侧,将Button显式对齐父项的右侧

    然后,您可以通过设置:

    android:layout_centerVertical="true"
    

    在TextView本身中


    新的操作系统版本可能更喜欢这样:

    <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_alignParentStart="true"
            android:text="Rs 3579.0"
        />
        <Button
            android:id="@+id/buyNowButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:text="Buy Now"
        />
    </RelativeLayout>
    
        2
  •  8
  •   Pratik Dasa    10 年前

    尝试以下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>
    
        3
  •  7
  •   VGM    7 年前

    使用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>
    
        4
  •  1
  •   Piyush    10 年前

    有两种方法:

    1) 您可以使用 RelativeLayout 您可以在其中拖动 Button 在你想要的地方。。

    2) 您可以使用weight属性 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>
    
        5
  •  1
  •   williamj949 Buddy    10 年前

    请改用此布局。。

    <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>
    
        6
  •  0
  •   Abhilash Das    7 年前

    使用 android:layout_gravity="end" 将所有元素向右移动

        7
  •  0
  •   Raeglan    7 年前

    这里的另一个简单解决方案不依赖于使用 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 ,现在,我不确定这是否比使用 相对布局 。但对我来说,在这么简单的布局中找一个亲戚总是感觉有点过分。

        8
  •  0
  •   Arie Agung    4 年前

    只需添加宽度为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>