从java代码更新按钮内部的图片(xml)
(android 2.1或更高版本的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
<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
}
}