如何在水平线性布局android中右键对齐widget?

Sha*_*anu 187 android alignment

这是我正在使用的代码,它不起作用:

<?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" 
    android:orientation="horizontal">

    <TextView android:text="TextView" android:id="@+id/textView1"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:gravity="right">
    </TextView>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

alc*_*san 392

尝试在您想要看到的元素之前添加空的View水平内部LinearLayout,例如:

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

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

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

  • 空视图试图占用最大空间,为按钮留出空间. (26认同)
  • 到目前为止,对于我来说,尝试在左侧有几个按钮,右边有一个最后一个按钮,这是唯一有用的.但这对我来说感觉就像是黑客.有没有"正确"的方法来做到这一点? (13认同)
  • 这有效!但任何人都能解释为什么?我完全不明白. (11认同)
  • 这太棒了!但是为什么引力="正确"从一开始就没有这种方式起作用?为什么它需要其他观点的帮助?如果没有额外的观点,它是如何"正确"的? (7认同)

She*_*tib 109

不要更改的LinearLayout的严重性,以"正确的",如果你不想要的一切是正确的.

尝试:

  1. 将TextView的宽度更改为fill_parent
  2. 将TextView的重力更改为right

码:

    <TextView 
              android:text="TextView" 
              android:id="@+id/textView1"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"   
              android:gravity="right">
    </TextView>
Run Code Online (Sandbox Code Playgroud)

  • 线性布局是否设计成实现这一目标?不应该只使用相对布局来实现这一目标吗?这个解决方案不是黑客吗? (2认同)

Wee*_*end 52

作为alcsan答案的补充,您可以使用Space自API 14(Android 4.0 ICE_CREAM_SANDWICH),此处提供文档.

Space是一个轻量级的View子类,可用于在通用布局中创建组件之间的间隙.

<?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="match_parent" 
    android:orientation="horizontal" >

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

    <TextView
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:text="TextView"
        android:gravity="right" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

对于支持14以下API级别的应用程序,有一个android.support.v4.widget.Space自Android支持库r22.1.0以来.

  • 这有效。哇,Android 的丑陋总是让我惊讶 (2认同)

Del*_*019 27

使用线性布局

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/select_car_book_tabbar"
        android:gravity="right" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:src="@drawable/my_booking_icon" />
    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

使用FrameLayout

<FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/select_car_book_tabbar">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|right"
            android:src="@drawable/my_booking_icon" />
    </FrameLayout>
Run Code Online (Sandbox Code Playgroud)

RelativeLayout

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/select_car_book_tabbar">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerInParent="true"
            android:src="@drawable/my_booking_icon" />
    </RelativeLayout>
Run Code Online (Sandbox Code Playgroud)


Saa*_*mud 21

设置视图layout_weight="1"就可以了.

<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/textView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1" />

<RadioButton
    android:id="@+id/radioButton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)

  • 这样简单的解决方案+1 (2认同)
  • 如果有人还在寻找,这是正确的解决方案:) (2认同)

Ron*_*nie 13

添加android:gravity="right"到LinearLayout.假设TextViewlayout_width="wrap_content"

  • 他特意说要在LinearLayout中对齐单个组件.不是线性布局本身:布局本身设置为fill_parent. (2认同)

小智 10

对于LinearLayout水平方向,指定layout_weight给除要右对齐的视图之外的其他子视图。这非常有效。

 <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Specialization"
                />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Right"
                android:textColor="#ff0000" />
    
    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)


Idr*_*raf 7

只需添加android:gravity="right"您的班轮布局.


Hir*_*tel 5

我已经用最简单的方法做到了:

只需采用一个relativelayout并将您想要放置在右侧的子 视图放入其中即可。

    <LinearLayout
        android:id="@+id/llMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#f5f4f4"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:paddingBottom="20dp"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:paddingTop="20dp">

        <ImageView
            android:id="@+id/ivOne"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher" />


        <TextView
            android:id="@+id/txtOne"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:text="Hiren"
            android:textAppearance="@android:style/TextAppearance.Medium"
            android:textColor="@android:color/black" />

        <RelativeLayout
            android:id="@+id/rlRight"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="right">


            <ImageView
                android:id="@+id/ivRight"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:src="@drawable/ic_launcher" />

        </RelativeLayout>
    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

希望它能帮助你。