2012-09-19 43 views
3

我正在Android應用程序中構建表單。RadioButtons在Android中以編程方式添加到RadioGroup中時具有不同的風格

該窗體有幾個字段,其中兩個組件是RadioGroups。包含其按鈕的第一個組在活動的佈局文件中完全定義。對於第二組,只有RadioGroup元素在佈局文件中定義,其中RadioButton在運行時被添加到組中。

正如你在下面的圖片中看到的,我有一些樣式問題。第二組中的單選按鈕看起來不同於第一組中的按鈕。第二組的按鈕圖像和文本顏色不同。除了按鈕的方向外,兩個RadioGroup都配置了相同的屬性。當我將第二組的按鈕直接添加到佈局文件中時,它們的外觀與第一組相同。

enter image description here

佈局文件。

<RadioGroup 
    android:id="@+id/radio_gender" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="4dp" 
    android:layout_marginLeft="8dp" 
    android:layout_marginRight="8dp" 
    android:layout_marginTop="4dp" 
    android:orientation="horizontal"> 
    <RadioButton 
     android:id="@+id/radio_male" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:checked="true" 
     android:text="@string/checkout_gender_male" /> 
    <RadioButton 
     android:id="@+id/radio_female" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/checkout_gender_female" /> 
</RadioGroup> 

...    

<RadioGroup 
    android:id="@+id/radio_payment" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="4dp" 
    android:layout_marginLeft="8dp" 
    android:layout_marginRight="8dp" 
    android:layout_marginTop="4dp" > 
</RadioGroup> 

添加單選按鈕的代碼。

RadioGroup paymentGroup = (RadioGroup) findViewById(R.id.radio_payment); 
RadioGroup.LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);   

for (String paymentType: checkoutData.getPaymentTypes()) { 
    RadioButton radioButton = new RadioButton(getBaseContext()); 
    radioButton.setText(paymentType); 
    paymentGroup.addView(radioButton, params); 
} 

如何通過代碼存檔組2中按鈕的外觀和感覺?

更新1

我做了一些更多的測試。

我已在以下配置中進行測試。

  • 模擬器 - 谷歌Android 4.1.1:同一行爲
  • 模擬器 - 谷歌Android 2.3.4:相同的行爲,但顯卡的所有單選按鈕都是平等的,但文字顏色還是有所不同。我想在這個版本的Android中,按鈕只有一個圖形。
  • 設備 - Nexus之一 - 的Android的CyanogenMod 7(的Android 2.3.7):同行爲上與Android 2.3.4

模擬器當我通過在佈局文件中增加一個按鈕混合所述第二組向上和兩個編程,結果仍然是相同的。第一個按鈕(在佈局中定義)看起來像預期的那樣,其他兩個按鈕使用不同的按鈕圖形並具有不同的文本顏色。

+0

只是一個早期的想法。如何創建一個擴展RadioButton並在XML中設置 weakwire

+0

你運行代碼的設備是什麼。你是否有從模擬器運行它的相同問題?什麼API?因爲我的結果沒有什麼不同。 RadarGroups是否在同一個ViewParent中。如果不是視圖父親有特定的風格附加? – weakwire

+0

我目前正在使用Android 4.1.1的Nexus S進行開發。但我會在模擬器和其他設備上檢查它,然後更新我的問題。 – Flo

回答

1

好吧,我找到了解決我的問題。

我使用了錯誤的上下文來創建RadioButton。

而不是

RadioButton radioButton = new RadioButton(getBaseContext()); 

我不得不使用

RadioButton radioButton = new RadioButton(getContext); 

RadioButton radioButton = new RadioButton(this); // this is the Activity 

我不知道爲什麼,我這裏使用的基本上下文,因爲我從來沒有使用過它。如果我沒有記錯,那麼Context對象可以包含有關活動佈局的樣式的信息。我想當我使用基本上下文時,這個信息丟失了,因此單選按鈕看起來不同。

相關問題