2011-01-19 17 views
7

Java kodunda, dinamik yani bir düğmeye stilini değiştirmek istiyorum, gibi bir şey:Android'de bir düğme stilini dinamik olarak nasıl değiştirebilirim?

((Button)findViewById(id)).setStyle("@styles/foo") 

<resources> 
    <style name="foo"> 
     <item name="android:adjustViewBounds">true</item> 
     <item name="android:maxHeight">100px</item> 
     <item name="android:maxWidth">200px</item> 
    </style> 
</resources> 

yüzden, setStyle gibi bir şey görmedim:

Ben her özelliğini değiştirmek gerekiyor ya da bütün stili değiştirebilir miyim? Bu soruya dışarı

cevap

0

Ayrıca 9 yama görüntüleri bir göz atmak isteyebilirsiniz. Bunlar, uygulamanızı çalıştıran geçerli cihaza dayalı olarak, widget'ınıza veya düğmenize bağlı olan görüntü boyutunu ve metni ayarlamak için çok kullanışlıdır. 9 patch draw tool

+0

Bunu biliyordum, ama çok teşekkür ederim. Verdiğim stil örneği iyi bir örnek değil çünkü düğmeye uygulamak istediğim şey değil, sadece icat edilmiş bir stil. Gölgeler, metin rengi/boyutu vb. Gibi şeyleri değiştirmek istiyorum. – DarthRoman

11

9 patch

dinamik hem setBackgroundResource() ve setTextAppearance() işlevlerini kullanmaya gerek bir düğmeye bu

<style name="ButtonHOLO" parent="android:Widget.Button"> 
     <item name="android:background">@drawable/btn_default_holo_dark</item> 
     <item name="android:minHeight">@dimen/calc_btn_h</item> 
     <item name="android:minWidth">@dimen/calc_btn_w</item> 
     <item name="android:textColor">#ffffff</item> 
</style> 

gibi bir stil atamak için. Örn .:

btn_default_holo_dark

sizin düğmesi için bir seçici açıklanır .xml dosyasının bir isimdir

btn.setBackgroundResource(R.drawable.btn_default_holo_dark); 
btn.setTextAppearance(context, R.style.ButtonHOLO); 

.

+0

bu kabul edilen cevap olmalı! –

1

Bu bariz kusuru atlatmanın en kolay yolu, düğmeler yapmaktı. Bunlardan birini Visibility.gone yapın. Daha sonra Visibility'u diğerinden gone'a değiştirin ve ilkini Visibility.visible ile etkinleştirin.

Bu çözümü gerçekten sevmiyorum, ancak şu ana kadar bulduğum alternatiflerden daha hızlı ve daha akıllıca.

İlgili konular