2013-04-29 10 views
19

Ben programlı şöyle bir RadioGroup için RadioButtons kümesi eklemek çalışıyorum:Programatik olarak android nasıl ayarlayabilirim: button = "@ null"?

for (int i = 0; i < RANGE; i++) { 
    RadioButton button = new RadioButton(this); 
    button.setId(i); 
    button.setText(Integer.toString(i)); 
    button.setChecked(i == currentHours); // Select button with same index as currently selected number of hours 
    button.setButtonDrawable(Color.TRANSPARENT); 
    button.setBackgroundResource(R.drawable.selector); 
    button.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      ((RadioGroup)view.getParent()).check(view.getId()); 
      currentHours = view.getId(); 
     } 
    }); 

    radioGroupChild.addView(button); 
} 

ve ben (benim arka plan üstüne sadece metin istiyorum) null düğmeye çekilebilir ayarlamanız gerekir. Bunu XML'de android:button="@null" ile el ile yapmak harika çalışıyor, ancak her radyo düğmesini sabitlemek istemiyorum. Sadece button.setButtonDrawable(null) yapmayı denedim ama hiçbir şey değişmiyor.

Herhangi bir yardım büyük beğeni topluyor!

+1

oldu http://stackoverflow.com/a/8910925/317889 – HGPB

cevap

5

Bunu yapmalısınız:

button.setBackgroundDrawable(null); 

sizin çekilebilir size selektör xml aracılığıyla saydam yapmak için seçici bir başvuru varsa: muhtemelen çözüm bulduğu olarak

<item android:drawable="@android:color/transparent" /> 

;

+0

Yukarıda söyledim, bunu denedim ve bir sebepten dolayı çalışmıyor. – Cornholio

+0

Bu, setButtonDrawable değil ,BackgroundDrawable ayarlandı. – Neoh

+0

Oh, üzgünüm, görmedim. Sorun şu ki, sadece özel seçicimi ayarlayabildiğim arka planı kaldırır. – Cornholio

41

Boş bir StateListDrawable kodunu çizilebilir olarak ayarlamanız gerekir. Yani android:button="@null" Java eşdeğerdir:

radioButton.setButtonDrawable(new StateListDrawable()); 
+3

Bu benim için mükemmel çalıştı. Bunun en iyi cevap olmadığından emin değil. – darrenp

+0

Benim için de çalıştın! Teşekkürler! – saiyancoder

+4

THis cevap doğru cevap olmalı – SILINIK

3

setButtonDrawable(getResources().getDrawable(android.R.color.transparent)) hile yapmak gerekir.

Sadece bu benim için çalıştı. birden fazla cihaz ve API'ler benim için çalıştı ve onu alır kadar basittir Ne

2

Bu aslında bir arka plan seçici kullanmak isteyebilirsiniz durumda daha iyi bir cevaptır setButtonDrawable(android.R.color.transparent);

+0

mükemmel çalıştı, teşekkürler –