2013-11-21 15 views
6

benim uygulamanın renk teması beri ben sadece renkler ve shapedrawables i aşağıda gösterildiği gibi renk ve şekillerle bir EditText arka plan çizilebilir inşa etmek isteyen kullanarak arka plan drawables oluşturabilir dinamiktir. Ama programlama LayerDrawable programlı

Programlama yoluyla bu aynı çekilebilir inşa etmek yapmak istiyor?

<item> 
    <shape> 
     <solid android:color="@android:color/yellow" /> 
    </shape> 
</item> 

<!-- main color --> 
<item 
    android:bottom="1dp" 
    android:left="1dp" 
    android:right="1dp"> 
    <shape> 
     <solid android:color="@android:color/white" /> 
    </shape> 
</item> 

<!-- draw another block to cut-off the left and right bars --> 
<item android:bottom="10dp"> 
    <shape> 
     <solid android:color="@android:color/white" /> 
    </shape> 
</item> 

bu denedim budur

....

GradientDrawable border = new GradientDrawable(); 
    border.setShape(GradientDrawable.RECTANGLE); 
    border.setColor(Color.WHITE); 

    GradientDrawable background = new GradientDrawable(); 
    background.setShape(GradientDrawable.RECTANGLE); 
    background.setColor(Color.YELLOW); 


    GradientDrawable clip = new GradientDrawable(); 
    clip.setShape(GradientDrawable.RECTANGLE); 
    border.setColor(Color.WHITE); 

    Drawable[] layers = {background, border, clip}; 
    LayerDrawable layerDrawable = new LayerDrawable(layers); 

    layerDrawable.setLayerInset(0, 0, 0, 0, 0); 
    layerDrawable.setLayerInset(1, 1, 0, 1, 1); 
    layerDrawable.setLayerInset(2, 0, 0, 0, 10); 

ancak sonuç farklıdır .... .... yardım lütfen!

+0

, neden stilleri kullanmıyorsun? http://developer.android.com/guide/topics/ui/themes.html –

+0

zaman ayırdığınız için zaten teşekkürler ... sunucudan gelen benim durumda renk değerlerinde ... ayrıca xml renkleri gibi değerleri devam edemez:) – zaaak

+0

hiç temaları uygulamak için bu görüntülerde bir renk filtresi, bazı görüntülerin kullanılması ve uygulanması düşündünüz mü. – Alan

cevap

20

ben yerine i ... ShapeDrawable kullanılan GradientDrawable kullanmanın ... nihayet çalışma var varsayılan EditText ile stilleri yenileyebilir bir EditText arka plan olarak bu layerDrawable ayarlayarak .... :)

hepsi bu özel renkler ...

ShapeDrawable border = new ShapeDrawable(); 
    border.getPaint().setColor(Color.WHITE); 

    ShapeDrawable background = new ShapeDrawable(); 
    background.getPaint().setColor(Color.BLACK); 


    ShapeDrawable clip = new ShapeDrawable(); 
    clip.getPaint().setColor(Color.WHITE); 

    Drawable[] layers = {background, border, clip}; 
    LayerDrawable layerDrawable = new LayerDrawable(layers); 

    layerDrawable.setLayerInset(0, 0, 0, 0, 0); 
    layerDrawable.setLayerInset(1, 1, 0, 1, 1); 
    layerDrawable.setLayerInset(2, 0, 0, 0, 10); 

`

+6

Daha fazla açıklama daha iyi olurdu. – jcaruso

+0

Tam ihtiyacım olan yardım, teşekkür ederim – JamisonMan111

0

Bu aynı zamanda Gradient Drawables çalışır:

GradientDrawable border = new GradientDrawable(); 
border.setColor(Color.White); 

GradientDrawable background = new GradientDrawable(); 
background.setColor(Color.Black); 

GradientDrawable clip = new GradientDrawable(); 
clip.setColor(Color.White); 

GradientDrawable[] layers = {background, border, clip}; 
LayerDrawable layerDrawable = new LayerDrawable(layers); 

layerDrawable.setLayerInset(0, 0, 0, 0, 0); 
layerDrawable.setLayerInset(1, 1, 0, 1, 1); 
layerDrawable.setLayerInset(2, 0, 0, 0, 10); 
App-Tema dinamikse