2012-04-01 60 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