2017-02-24 126 views
1

我想在一個片段中創建若干個單選按鈕,我只有風格的問題。如果我在xml文件中放置了單選按鈕代碼,默認樣式應用正確,但是當我通過函數創建單選按鈕時,我會看到不同的樣式!程序化的單選按鈕樣式

XML

<RadioGroup 
      android:id="@+id/radiogroup" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:orientation="vertical" 
      android:animationCache="false"> 

      <RadioButton 
       android:text="RadioButton 1" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/radioButton3" /> 

      <RadioButton 
       android:text="RadioButton 2" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/radioButton4" /> 


</RadioGroup> 

結果

enter image description here

Java代碼

這段代碼放在onCreateView的片段

public void addRadioButton(Context ctx,int num){ 

    RadioGroup radioGroup= (RadioGroup) alertInflatedView.findViewById(R.id.radiogroup); 

    for (int i = 1; i <= num; i++) { 
     RadioButton radioButton = new RadioButton(ctx); 
     radioButton.setId(1+i); 
     radioButton.setText("Radio " + radioButton.getId()); 
     radioButton.setTextColor(getResources().getColor(R.color.black)); 

     radioGroup.addView(radioButton); 

    } 

} 

結果

enter image description here

正如你所看到的單選按鈕有不同的風格,有人可以幫助我,如果是不可能性,以編程方式應用默認的風格?

+0

[設置樣式編程方式添加意見]的可能的複製(http://stackoverflow.com/問題/ 28046878 /設置的樣式 - 的 - 程序 - 添加視角) – jakubbialkowski

回答

6

您必須按照您的要求在drawable或style.xml上創建樣式。

繪製/ null_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:drawable="@android:color/transparent" /> 
    </selector> 

設置每個按鈕使用它(並居中文本)這樣的(R.drawable.null_selector是選擇XML):

現在,在你的活動中,你必須實現這樣的風格。

radioButton.setText(Integer.toString(i)); 
    radioButton.setGravity(Gravity.CENTER); 
    radioButton.setButtonDrawable(R.drawable.null_selector); 

我認爲,這將幫助您在單選按鈕中實現自定義樣式。

2

感謝達摩,我遵循了你的建議,改變了一些事情,我解決了!

Java代碼

public void addRadioButton(Context ctx,int num){ 

    RadioGroup radioGroup= (RadioGroup) alertInflatedView.findViewById(R.id.radiogroup); 
    RadioGroup.LayoutParams layoutParams = new RadioGroup.LayoutParams(
      RadioGroup.LayoutParams.MATCH_PARENT, 
      RadioGroup.LayoutParams.WRAP_CONTENT); 

    for(int i=0; i<num; i++){ 

     RadioButton radioButton = new RadioButton(ctx); 
     radioButton.setId(1+i); 
     radioButton.setText("Radio"+i); 
     radioButton.setTextSize(16); 
     radioButton.setTextColor(getResources().getColor(R.color.black)); 
     radioButton.setButtonDrawable(R.drawable.radio_button_selector); 
     radioButton.setPadding(80,0,0,0); 
     radioButton.setGravity(Gravity.CENTER_VERTICAL); 
     radioButton.setLayoutParams(layoutParams); 
     radioGroup.addView(radioButton); 

    } 

} 

XML單選按鈕與選中和未選中按鈕圖像

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:state_checked="false" android:drawable="@drawable/unchekedradiobutton" /> 
<item android:state_checked="true" android:drawable="@drawable/checkedradiobutton" /> 
<item android:drawable="@drawable/unchekedradiobutton" /> <!-- default --> 

0

選擇器使用吹氣例如充氣自定義佈局,輕鬆地獲得一個自定義單選框

private RadioButton createCustomRadioButton(Context context){ 
    LayoutInflater inflater = LayoutInflater.from(context); 
    View v = inflater.inflate(R.layout.radio_button,null); 
    RadioButton radioButton = (RadioButton) v.findViewById(R.id.radio_button); 
    radioButton.setText("It Works!"); 

    ((ViewGroup)radioButton.getParent()).removeView(radioButton); 
    return radioButton; 
} 

radio_buttom.xml

<RadioButton 
    android:id="@+id/radio_button" 
    style="@style/radio" 
    android:background="@drawable/style_line" /> 

style.xml

<style name="radio"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:layout_marginLeft">30dp</item> 
    <item name="android:layout_marginRight">30dp</item> 
    <item name="android:layout_marginTop">10dp</item> 
    <item name="android:layout_marginBottom">10dp</item> 
    <item name="android:padding">10dp</item> 
    <item name="android:drawablePadding">5dp</item> 
    <item name="android:textColor">@color/whiteColor</item> 
    <item name="android:textColorHint">@color/hintColor</item> 
    <item name="android:editTextColor">@color/whiteColor</item> 
</style> 

由Ubirajara(墨西哥)