在Android布局中对齐左侧和右侧边缘的文本视图

Ric*_*ard 148 android

我开始使用Android了.我无法进行简单的布局.

我想用a LinearLayout来将两个TextViews放在一行中.一个TextView在左侧,另一个在右侧(类似于浮点数:左,浮点数:右侧在CSS中).

这是可能的,还是我需要使用不同的ViewGroup或进一步的布局嵌套来完成它?

这是我到目前为止所拥有的:

<?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" android:padding="10sp">
<TextView android:id="@+id/mytextview1" android:layout_height="wrap_content" android:text="somestringontheleftSomestring" android:layout_width="wrap_content"/>
<TextView android:id="@+id/mytextview2" android:layout_height="wrap_content" android:ellipsize="end"
    android:text="somestringontheright" android:layout_width="wrap_content"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Dav*_*ebb 280

使用RelativeLayoutwith layout_alignParentLeftlayout_alignParentRight:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:padding="10dp">

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

    <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentRight="true" 
        android:id="@+id/mytextview2"/>

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

此外,您应该使用dip(或dp)而不是sp在布局中. sp反映文本设置以及屏幕密度,因此它们通常仅用于调整文本项的大小.

  • 为了防止内容重叠,可能还想在第一个textview中添加'android:layout_toLeftOf ="@ + id/mytextview2"' (57认同)
  • 为了更好地兼容和支持不同的设备屏幕,请使用"android:layout_alignParentEnd ="true""(使用layout_alignParentRight时)和"android:layout_alignParentStart ="true""(使用layout_alignParentLeft时). (2认同)

Jer*_*rth 88

您可以使用gravity属性来"浮动"视图.

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

    <LinearLayout 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center_vertical|center_horizontal"
            android:orientation="horizontal">

        <TextView  
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:gravity="left"
            android:layout_weight="1"
            android:text="Left Aligned"
            />

        <TextView  
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:gravity="right"
            android:layout_weight="1"
            android:text="Right Aligned"
            />
    </LinearLayout>

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

  • 对不起,它的工作.我忘了添加android:layout_weight ="1".加入后它的罚款. (3认同)

Car*_*mer 10

它可以完成LinearLayout(比相对布局选项更少的开销和更多的控制).为第二个视图提供剩余空间,以便gravity工作.测试回API 16.

证明

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Aligned left" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="end"
        android:text="Aligned right" />
</LinearLayout> 
Run Code Online (Sandbox Code Playgroud)

如果要限制第一个文本视图的大小,请执行以下操作:

根据需要调整重量.相对布局不允许您设置这样的百分比权重,只允许其中一个视图的固定dp

证明2

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

    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="Aligned left but too long and would squash the other view" />

    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:gravity="end"
        android:text="Aligned right" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)


pum*_*e65 8

即使有了Rollin_s的提示,Dave Webb的答案也不适用于我.右侧TextView的文本仍然与左侧的文本重叠TextView.

我最终得到了我想要的行为:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout01" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"
    android:padding="10dp">

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

<TextView 
    android:id="@+id/mytextview2"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@id/mytextview1"
    android:gravity="right"/>

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

请注意,mytextview2已"android:layout_width"设置为"match_parent".

希望这有助于某人!