2011-07-28 2 views
12

XML 파일 :android : drawableBottom 특성과 함께 사용할 경우 그리기 모양이 표시되지 않습니다. 고해상도/드로어 블/사진 gradient_box.xml에 저장

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient 
     android:startColor="#FFFF0000" 
     android:endColor="#80FF00FF" 
     android:angle="45"/> 
    <padding android:left="7dp" 
     android:top="7dp" 
     android:right="7dp" 
     android:bottom="7dp" /> 
    <corners android:radius="8dp" /> 
</shape> 

(위의 모양의 정의는 다음 안드로이드 개발자 가이드에서 가져되고 거기에 오류가 없습니다..).

은의이 텍스트 뷰와 함께 사용 해보자 :

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="Text with some crazy rectangle shape below it." 
    android:drawableBottom="@drawable/gradient_box"/> 

텍스트 뷰의 표시 drawableBottom 속성이없는 것처럼! 그러나, 배경과 형상을 설정하면 잘 작동 : 안드로이드에 실제 이미지 (예를 들어, *의 .PNG)를 설정

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="Text with crazy background" 
    android:background="@drawable/gradient_box"/> 

: drawableBottom도 잘 작동한다.

아이디어가 있으십니까?

답변

31

해결했습니다! 문제는 모양이 본질적으로 경계를 가질 필요는없는 것 같습니다. 즉, 결과 드로어 블은 어떻게 그릴 수 있는지 알지 못합니다! 형상은 텍스트 뷰의 배경 그리기로 지정되었을 때, 그 크기가 알려진

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient 
     android:startColor="#FFFF0000" 
     android:endColor="#80FF00FF" 
     android:angle="45"/> 
    <padding android:left="7dp" 
     android:top="7dp" 
     android:right="7dp" 
     android:bottom="7dp" /> 
    <corners android:radius="8dp" /> 
    <size android:width="xxdp" 
      android:height="xxdp"/> 
</shape> 

가 동일하여야 :

단순히이 같은 형상의 크기를 지정, 이러한 문제를 해결하기 위하여 TextView 차원. TextView의 오른쪽 또는 위로 이동하도록 모양을 말할 때 모양 크기를 자동으로 결정할 수 없습니다.

+4

그런 경우 match_parent 너비를 설정할 수 없습니다. –

+1

그라데이션 드로잉 설정은 프로그래밍 방식으로 설정했을 때 효과적입니다 (예 : https://stackoverflow.com/questions/8481322/create-a-radial-gradient-programmatically). – foo

1

ImageView를 사용하여 "android : src"속성의 일부로 선 모양을 호스트하는 경우 모양 xml의 일부로 너비와 높이를 지정하지 않으면 같은 문제가 발생합니다. 한 가지 해결 방법은 ImageView의 "android : background"속성의 일부로 선 모양을 호스팅하는 것입니다. 이렇게하면 선 모양의 "ImageView"크기 속성을 사용하여 "표시"할 수 있습니다.