2011-07-28 5 views
12

XML dosyası:android: drawableBottom özniteliğiyle birlikte kullanıldığında çizilemez şekil gösterilmiyor. res/çekilebilir/gradient_box.xml kaydedilmiş

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

(yukarıdaki şekil tanımı daha sonra Android geliştirici kılavuzundan alınmıştır edilir İçinde herhangi bir hata yok..).

en bir TextView ile birlikte kullanmaya çalışalım:

<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"/> 

TextView'un görüntüler drawableBottom niteliği yoktu sanki! Ancak, arka plan olarak şekil vermenin gayet güzel çalışıyor: android için gerçek görüntü (örneğin bir * .png) Ayar

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

: drawableBottom da gayet iyi çalışıyor.

Herhangi bir fikrin var mı?

cevap

31

Çözüldü! Sorun, bir şeklin zorunlu olarak içsel sınırlara sahip olmaması gibi görünüyor. Yani, ortaya çıkan çekilebilir kendini nasıl çekeceğini bilmiyor! şekil TextView için arka plan çekilebilir belirtilen zaman, boyutları bilinen

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

ile aynı olacak şekilde:

sadece bu gibi bir şekil boyutunu belirlemek, bu sorunu çözmek için, TextView boyutları. Şeklin, sağa veya TextView'un üstüne gitmesini söylediğinizde, şekil boyutları otomatik olarak belirlenemedi.

+4

Böyle bir durumda match_parent genişliğini ayarlamak mümkün değildir. –

+1

Benim için gradyanı ayarlayabilmem için, programlı olarak ayarladığım zaman, yani burada https://stackoverflow.com/questions/8481322/create-a-radial-gradient-programmatically – foo

1

Çizgi şeklini "android: src" özelliğinin bir parçası olarak barındırmak için bir ImageView kullanıyorsanız, xml biçiminde genişlik ve yükseklik belirtmediğiniz sürece aynı soruna da girersiniz. Bir geçici çözüm, çizgi şeklini ImageView'ın "android: background" özelliğinin bir parçası olarak barındırmaktır. Bu şekilde, resim biçimi için ImageView'ın boyut özelliklerini "göster" seçeneği ile kullanabilirsiniz.

İlgili konular