从java代码更新按钮内部的图片(xml)

从java代码更新按钮内部的图片(xml),java,android,xml,button,drawable,Java,Android,Xml,Button,Drawable,(android 2.1或更高版本的java/xml) 我正在使用样式创建按钮: <style name="MainButton"> <item name="android:textColor">#000000</item> <item name="android:text">test</item> <item name="android:drawableRight">@drawable/ic_lau

(android 2.1或更高版本的java/xml)

我正在使用样式创建按钮:

<style name="MainButton">
    <item name="android:textColor">#000000</item>
    <item name="android:text">test</item>
    <item name="android:drawableRight">@drawable/ic_launcher</item>
    <item name="android:drawablePadding">10dip</item>
    <item name="android:paddingLeft">10dip</item>
</style>

#000000
测试
@牵引式/集成电路发射器
10度
10度
我知道我可以(从java代码)更改文本,例如:

Button but = (Button)findViewById(R.id.button2);
    but.setText(Html.fromHtml("<b>" + "title" + "</b>" +  "<br />" + 
            "<small>" + "description" + "</small>" + "<br />" + 
            "<small>" + "DateAdded" + "</small>"));
按钮but=(按钮)findViewById(R.id.button2);
但是.setText(Html.fromHtml(“+”标题“+”+”
“+ “+”说明“+”
“+ “+”日期已添加“+”);
看起来很好,但是 如何从java代码中更改按钮内部的可绘制对象

我不想使用“button.setBackgroundResource();”方法


有什么想法吗?:>

创建另一个具有相同属性的xml,但更改“@drawable/”资源。在onclick方法中,将按钮的背景资源设置为这个新的xml,我想您需要一个自定义选择器

创建一个自定义选择器,并将其设置为xml中的可绘制资源

例如:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" 
        android:drawable="@drawable/cell_top_selected" />
    <item android:drawable="@drawable/cell_top" />
</selector>
如果你不想这样

   I dont want to use "button.setBackgroundResource();" method.
如果你不想使用挫折资源,那么

取而代之的是TextView,按钮的超类是TextView,默认情况下TextView没有任何后台可绘制资源。

    button.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);

您可以使用资源ID或drawables

如果我正确理解了问题,并且假设您希望完全更改按钮并绘制自己的按钮,那么您必须创建自己的按钮。这可以通过创建一个新类,然后用Button扩展它,然后重写View类的onDraw()方法来实现。在此方法中,您可以绘制任何您喜欢的内容,即背景、文本、边框等

比如说

class NewButton extends Button{
    protected void onDraw (Canvas canvas){
    //Draw here
    }
}

我希望这能有所帮助。

请看:谢谢你的快速回答,但我相信我的提问用错了词。我想完全改变我的可绘制对象(编辑),这正是我想要的。(除已启用外)并且它可以完美地工作!谢谢。
class NewButton extends Button{
    protected void onDraw (Canvas canvas){
    //Draw here
    }
}