2011-05-08 19 views
5

Bir etkinlikte düğme oluşturuyorum:Bir düğmenin stilini nasıl uzatabilirim?

Button contactButton = new Button(this, null, R.style.ContactButton); 
contactButton.setText(contactName); 
contactsView.addView(contactButton); 

Karşılık gelen stili ile:

<style name="ContactButton" parent="@android:style/Widget.Button"> 
</style> 

Widget.Button stilini genişleterek ContactButton stilini kullanmaya çalışıyorum böylece tüm özellikleri yeniden tanımlamak zorunda kalmadan stil özelliklerini tek bir yerde tutabilmem için (9-patch background ve ark.)

Ancak, varsayılan düğme stilini devralmanın herhangi bir yolunu bulamıyorum. Yukarıdakilerin sonucu her zaman varsayılan bir TextView gibi görünür.

En yakınım ButtonStyle'ı Button butonuna aktarıyor, bu da bana varsayılan butonun görünümünü geri getiriyor ama elbette bu yolu geçersiz kılamıyorum:

Button contactButton = new Button(this, null, android.R.attr.buttonStyle); 

Peki, herhangi bir fikir nasıl Bunu gerçekleştirmek için?

Güncelleme:

new Button(this, null, android.R.attr.buttonStyle), new Button(this, null, android.R.attr.buttonStyle) çalışmasının neden olduğunu ve new Button(this, null, android.R.style.Widget_Button)'nin neden olmadığını açıklıyor.

Sadece bu hatayı çalıştırıyorum çünkü Düğmeler'i programlı olarak yapıyorum, style özniteliğini XML'de ayarlamak gayet iyi çalışıyor.

Hala stil sistemini kullanmama izin veren basit bir çözüm olup olmadığını bilmek isterim.

+0

Düğmeyi pragmatik olarak oluşturmak yerine XML'den şişirmeyi denediniz mi? – schwiz

+0

bir çözüm buldunuz mu? –

cevap

-1

Bir fabrika sınıfı oluşturabilir ve size yeni tanımlanmış bir nesnenin yeni örneklerini iade edebilir misiniz?

Class ButtonFactory(){ 
    public Button getStyledButton(String name){ 
     Button styledButton = new Button(); 
     styledButton.setText(name); 
     // do stuff to button 
     return styledButton 
    } 
} 

Bunu aktivitenize ekleyin.

onCreate(..){ 
    ButtonFactory builder = new ButtonFactory(); 
    Button styledButton = builder.getStyledButton(); 
} 
+0

Evet, düğme örneğini doğrudan değiştirmek işe yarıyor, ancak güzel bir şekilde ayrılmasını sağlamak için stiller sistemini kullanmayı umuyorum. – Anotherdroid

İlgili konular