2012-04-01 58 views
0

是否有純java方式設置android:button屬性?我的用例是我有一些單選按鈕與自定義開/關圖像。他們目前在xml中,但出於幾個原因,我希望他們的創建是在純java中完成的。目前android:button引用一個<selector> xml文件:Android:java的等價物android:button屬性?

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" 
     android:drawable="@drawable/red_down_full" /> 
    <item android:drawable="@drawable/red_down" /> 
</selector> 

有什麼辦法要麼

  • 參考Java中的<selector> xml文件
  • 跳過<selector>完全,只是設定在Java中state_checked圖像?

回答

0

是的,您可以通過代碼設置xml圖像選擇器。如果您想在RadioButton上設置選擇器,則必須撥打setButtonDrawable(idOfYourSelector)

的代碼將是這樣的:

((RadioButton)findViewById(R.id.yourRadioButton)).setButtonDrawable(R.drawable.yourSelector); 

如果你只想設置時使用的state_checked的圖像,那麼你需要在setButtonDrawable(idOfYourImage),而不是你選擇的ID提供您state_checked圖像的ID 。你的情況將是:

((RadioButton)findViewById(R.id.yourRadioButton)).setButtonDrawable(R.drawable.red_down_full); 

爲了確保它不會重疊你RadioButton的標籤,你必須知道你的drawable的寬度。然後根據您的drawable的寬度設置您的RadioButton的左側填充。這將確保您的RadioButton的圖像不會與其標籤重疊。

+0

儘管如此,仍然會將原始單選按鈕圖像疊加在背景上方;和'setButtonDrawable'則會將圖像(有點大)剪切到原始單選按鈕的邊框上;似乎都不會做什麼'android:button =「...」' – 2012-04-01 02:04:26

+0

@LiHaoyi:對不起。我以爲你問的是Button,而不是RadioButton。我已經更新了我的答案。 – Arci 2012-04-01 02:38:57

+0

@LiHaoyi:解決方案是相應地設置您的RadioButton的左側填充。 :) – Arci 2012-04-01 02:50:13