Android 레이아웃에서 왼쪽 및 오른쪽 가장자리에 텍스트 뷰 정렬


158

Android를 시작하고 있습니다. 간단한 레이아웃을 얻는 데 문제가 있습니다.

단일 행에서 LinearLayout2를 배치 하기 위해 a를 사용하고 싶습니다 TextViews. 하나 TextView는 왼쪽에 있고 다른 하나 는 오른쪽에 있습니다 (CSS에서는 float : left, float : right와 유사).

가능합니까, 아니면 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>

답변:


290

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>

또한 레이아웃 대신 (또는 ) 을 사용해야 합니다dipdpsp . sp텍스트 설정과 화면 밀도를 반영하여 일반적으로 텍스트 항목 크기 조정에만 사용합니다.


57
내용이 겹치지 않도록하기 위해 첫 번째 텍스트보기에 'android : layout_toLeftOf = "@ + id / mytextview2"를 추가하고 싶을 수도 있습니다
Rollin_s

동적 테이블의 경우 다음을 수행 할 수 있습니다. TableRow.LayoutParams col1Params = new TableRow.LayoutParams (); // 행의 내용을 마무리합니다. col1Params.height = LayoutParams.WRAP_CONTENT; col1Params.width = LayoutParams.WRAP_CONTENT; // 열의 무게 중심을 설정하도록 중력을 설정합니다. col1Params.gravity = Gravity.LEFT;
siddhusingh

3
다른 장치 화면에 대한 호환성 및 지원을 향상 시키려면 "android : layout_alignParentEnd ="true ""(layout_alignParentRight 사용시) 및 "android : layout_alignParentStart ="true ""(layout_alignParentLeft 사용시)를 사용하십시오.
ivanleoncz

@Rollin_s, 당신을 사랑합니다.
Vegas

89

중력 속성을 사용하여 뷰를 "부동"할 수 있습니다.

<?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>

1
불행히도 이것이 두 항목이 같은 줄에 있지는 않는 것 같습니다
Webnet

1
중력은 "텍스트 정렬"에만 영향을 미치지 않습니까?
Joshua Pinter

3
죄송합니다. 작동합니다. android : layout_weight = "1"을 추가하지 않았습니다. 그 추가 후.
Abdullah Umer 2014 년

13

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> 

첫 번째 텍스트보기의 크기를 제한하려면 다음을 수행하십시오.

필요에 따라 무게를 조정하십시오. 상대 레이아웃을 사용하면 이와 같은 백분율 가중치를 설정할 수 없으며 뷰 중 하나의 고정 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>

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>

mytextview2는 "android:layout_width"다음과 같이 설정되었습니다."match_parent" .

이것이 누군가를 돕기를 바랍니다!


4

<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="Hello world" />

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

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Gud bye" />


1

왼쪽 및 오른쪽 요소가 컨텐츠를 랩핑하지만 중간 공간이 필요한 경우

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    <Space
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"/>
    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
</LinearLayout>

0

이것을 달성하는 다른 많은 방법이 있습니다. 나는 이런 식으로 할 것입니다.

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

    <TextView
        android:id="@+id/textRight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginTop="30dp"
        android:text="YOUR TEXT ON THE RIGHT"
        android:textSize="16sp"
        android:textStyle="italic" />


    <TextView
        android:id="@+id/textLeft"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginTop="30dp"
        android:text="YOUR TEXT ON THE LEFT"
        android:textSize="16sp" />
</RelativeLayout>

0

Dave Webb의 답변이 저에게 효과적이었습니다. 감사! 여기 내 코드, 이것이 누군가를 돕기를 바랍니다!

<RelativeLayout
    android:background="#FFFFFF"
    android:layout_width="match_parent"
    android:minHeight="30dp"
    android:layout_height="wrap_content">
    <TextView
        android:height="25dp"
        android:layout_width="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="ABA Type"
        android:padding="3dip"
        android:layout_gravity="center_vertical"
        android:gravity="left|center_vertical"
        android:layout_height="match_parent" />
    <TextView
        android:background="@color/blue"
        android:minWidth="30px"
        android:minHeight="30px"
        android:layout_column="1"
        android:id="@+id/txtABAType"
        android:singleLine="false"
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginRight="20dp"
        android:layout_width="wrap_content" />
</RelativeLayout>

이미지 : 이미지


0

여기에 이미지 설명을 입력하십시오

이 코드는 컨트롤을 두 개의 동일한면으로 나눕니다.

    <LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/linearLayout">
    <TextView
        android:text = "Left Side"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight = "1"
        android:id = "@+id/txtLeft"/>

    <TextView android:text = "Right Side"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight = "1"
        android:id = "@+id/txtRight"/>
    </LinearLayout>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.