2012-08-30 1 views
1

텍스트 오른쪽에 사용자 정의 배경, 텍스트 및 이미지가있는 두 개의 동일한 크기의 라디오 버튼을 만들고 싶습니다. 표준 "Button"과 다른 점 때문에 클릭 가능한 "RelativeLayout"을 사용하여 만들었습니다.RelativeLayout에서 내 "중심"오브젝트가 중심에서 약간 벗어나는 이유는 무엇입니까?

텍스트와 이미지의 높이가 다르기는하지만 버튼 하나 하나에 세로로 가운데 놓기를 원합니다. 또한 텍스트 + 이미지 조합을 단추의 가운데에 수평으로 배치해야합니다. 이 두 번째 부분은 제가 어려움을 겪고있는 것입니다. 그것은 중심에 있지 않고 왼쪽에 가깝습니다. 아래 이미지에서 왼쪽은 내가 원하지만 오른쪽은 현재 상황입니다. 단추 중 하나의 이미지 (긴 텍스트가있는 이미지)는 크기가 작아 지도록 크기가 조정됩니다. 버튼의 오른쪽에는 여전히 여유 공간이 있습니다.

<LinearLayout 
    android:baselineAligned="false" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <RelativeLayout 
     android:id="@+id/my_button" 
     android:background="@drawable/radio_button" 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal"> 
     <TextView 
      android:id="@+id/button_textview" 
      android:text="@string/button_label" 
      android:textAppearance="?android:attr/textAppearanceButton" 
      android:layout_centerVertical="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"></TextView> 
     <ImageView 
      android:contentDescription="@string/image_description" 
      android:id="@+id/button_imageview" 
      android:layout_centerVertical="true" 
      android:src="@drawable/my_icon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@id/button_textview"> 
     </ImageView> 
    </RelativeLayout> 

    <RelativeLayout 
     ... same thing for the second button ... 
    </RelativeLayout> 

</LinearLayout> 

내가 잘못 뭐하는 거지 : 여기

What I want is on the left, and what's happening is on the right.

내 코드? 당신의 버튼과

답변

0

이 밝혀 솔루션

를 추가했다
android:paddingRight="0dip" 

이상하게도, 내가 처음에는 패딩을 넣지는 않았지만.

1

사용이 : 이제

<LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal" 
       android:layout_gravity="center_horizontal" 
       > 
    <TextView android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_vertical" 
       android:text="MyButton"/> 
    <ImageView android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_vertical" 
       android:src="@drawable/my_image"/> 

</LinearLayout> 

, 당신은 다른 부모 뷰에 배치 할 수 있습니다. 위의 버튼에 레이아웃 속성을 적용하려면 위의 버튼의 바깥 쪽 <LinearLayout> 태그에 해당 속성을 배치하십시오.

대안 :

당신은 같은 TextView 사용하여 속성의 측면 (왼쪽, 오른쪽, 위쪽, 아래쪽)에서 발행되는 사용자 지정 이미지를 설정할 수 있습니다 android:drawableLeft="@drawable/my_image"

+0

아무 것도 바뀌지 않았지만, 고마워. 나는 거기에서 잠시 동안 희망을 품었다. drawableRight를 사용하지 않는 이유는 텍스트 오른쪽에있는 것이 아니라 버튼의 오른쪽 가장자리에 그릴 수 있기 때문입니다. – Kalina

+0

질문에서 현재 사용중인 레이아웃을 업데이트 할 수 있습니까? –

+0

@ TheBeatlemaniac이 (가) 답변에서 편집했습니다. –

관련 문제