안드로이드 개발 질문/답변
(글 수 45,052)
구성을 그리자면
textview1 | image
---------- | view
textview2 | 1
이런 식으로 2개의 텍스트뷰와 한개의 이미지 뷰가 있습니다..
제가 원하는건 오른쪽에 항상 이미지가 넣어져 있고
그 나머지 부분을 텍스트뷰가 차지하는 모양인데
텍스트 뷰가 짧을 경우에는
tv1| image
-- | view
tv2| 1
위처럼 왼쪽으로 붙어 나오고
텍스트 뷰가 길 경우에는
texttextviewview1
texttextviewview2
위와 같이 나오고 이미지가 아예 안나옵니다
width나 기타 속성을 어떻게 해야 이미지가 항상 오른쪽에 있는 구성이 될까요?
---------------------------------------------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="6dip"
android:background="@android:color/black">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right"
>
<TextView
android:id="@+id/toptext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/bottomtext"
android:singleLine="false"
/>
</LinearLayout>
<ImageView
android:id="@+id/icon"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="6dip"
android:src="@drawable/icon"
android:layout_gravity="top"
android:scaleType="fitStart"
/>
</LinearLayout>
2010.02.26 10:14:30
이미지뷰가 왼쪽에 있으면 이미지뷰 크기가 정해지기때문에 레이아웃들이 제대로 자리잡는데 이같은 경우는 TextView가 먼저 fill_parent를 받아서 화면크기만큼 확장해버린는듯 하더군요 어쨌든 이렇게 하면 됩니다. 저도 아직 layout_weight 의 특징을 완전히 파악하지 못해 설명은 하지 못하고 xml 소스코드만 첨부합니다.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:id="@+id/textLayout"
android:orientation="vertical"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/toptext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="1번째 줄"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/bottomtext"
android:singleLine="false"
android:text="2번째 줄"
/>
</LinearLayout>
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dip"
android:src="@drawable/icon"
android:layout_gravity="top"
android:scaleType="fitStart"
/>
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:id="@+id/textLayout"
android:orientation="vertical"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/toptext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="1번째 줄"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/bottomtext"
android:singleLine="false"
android:text="2번째 줄"
/>
</LinearLayout>
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dip"
android:src="@drawable/icon"
android:layout_gravity="top"
android:scaleType="fitStart"
/>
</LinearLayout>
Layout 을 조정해서 할 수 있는 방법도 있겠지만, TextView 의 setCompoundDrawables API 를 참고 하시거나, android:drawableRight 속성값을 사용하시면 하나의 TextView 만으로도 원하시는 Layout 을 구성할 수 있지 않을까 합니다.