Android를 시작하고 있습니다. 간단한 레이아웃을 얻는 데 문제가 있습니다.
단일 행에서 LinearLayout
2를 배치 하기 위해 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>
답변
RelativeLayout
with layout_alignParentLeft
및 layout_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>
또한 레이아웃 대신 (또는 ) 을 사용해야 합니다dip
dp
sp
. sp
텍스트 설정과 화면 밀도를 반영하여 일반적으로 텍스트 항목 크기 조정에만 사용합니다.
답변
중력 속성을 사용하여 뷰를 “부동”할 수 있습니다.
<?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>
답변
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 만
<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>
답변
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"
.
이것이 누군가를 돕기를 바랍니다!
답변
<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" />
답변
왼쪽 및 오른쪽 요소가 컨텐츠를 랩핑하지만 중간 공간이 필요한 경우
<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>
답변
이것을 달성하는 다른 많은 방법이 있습니다. 나는 이런 식으로 할 것입니다.
<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>