除了android系统自带的button按钮以外,还提供了带图标的按钮imagebutton
要制作带图标的按钮,首先要在布局文件中定义imagebutton,然后通过setimagedrawable方法来设置要显示的图标。
注意:
我们可以在布局文件中就直接设置按钮的图标,如
android:src=”@drawable/icon1″
我们也可以在程序中设置自定义图标
imgbtn3.setimagedrawable(getresources().getdrawable(r.drawable.icon2));
我们还可以使用系统自带的图标
imgbtn4.setimagedrawable(getresources().getdrawable(android.r.drawable.sym_call_incoming));
设置完按钮的图标后,需要为按钮设置监听setonclicklistener,以此捕获事件并处理
下面的例子讲述的是由4个图标按钮组成的布局,其中三个按钮的图标是自定义的,第四个按钮的图标是系统的,当点击按钮1的时候,弹出dialog,当点击按钮2的时候,点击确定后,可以将按钮2的图标变成按钮3的图标,当点击按钮3的时候,按钮3的图标变成了系统打电话的图标,点击按钮4,显示一个提示dialog
imagebuttontest.java源代码
package org.loulijun.imagebutton;
import android.app.activity;
import android.app.alertdialog;
import android.app.dialog;
import android.content.dialoginterface;
import android.os.bundle;
import android.view.view;
import android.widget.button;
import android.widget.imagebutton;
import android.widget.textview;
public class imagebuttontest extends activity {
/** called when the activity is first created. */
textview textview;
imagebutton imgbtn1;
imagebutton imgbtn2;
imagebutton imgbtn3;
imagebutton imgbtn4;
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
textview=(textview)findviewbyid(r.id.textview);
//分别取得4个imagebutton对象
imgbtn1=(imagebutton)findviewbyid(r.id.imagebutton1);
imgbtn2=(imagebutton)findviewbyid(r.id.imagebutton2);
imgbtn3=(imagebutton)findviewbyid(r.id.imagebutton3);
imgbtn4=(imagebutton)findviewbyid(r.id.imagebutton4);
//分别为imagebutton设置图标
//imgbtn1已经在main.xml布局中设置了图标,所以就不在这里设置了(设置图标即可在程序中设置,也可在布局文件中设置)
imgbtn2.setimagedrawable(getresources().getdrawable(r.drawable.icon));//在程序中设置图标
imgbtn3.setimagedrawable(getresources().getdrawable(r.drawable.icon2));
imgbtn4.setimagedrawable(getresources().getdrawable(android.r.drawable.sym_call_incoming));//设置系统图标
//下面为各个按钮设置事件监听
imgbtn1.setonclicklistener(new button.onclicklistener()
{
@override
public void onclick(view v) {
// todo auto-generated method stub
dialog dialog=new alertdialog.builder(imagebuttontest.this)
.settitle("提示")
.setmessage("我是imagebutton1")
.setpositivebutton("确定",new dialoginterface.onclicklistener() {
@override
public void onclick(dialoginterface dialog, int which) {
// todo auto-generated method stub
//相应的处理操作
}
}).create();
dialog.show();
}
});
imgbtn2.setonclicklistener(new button.onclicklistener()
{
@override
public void onclick(view v) {
// todo auto-generated method stub
dialog dialog=new alertdialog.builder(imagebuttontest.this)
.settitle("提示")
.setmessage("我是imagebutton2,我要使用imagebutton3的图标")
.setpositivebutton("确定",new dialoginterface.onclicklistener() {
@override
public void onclick(dialoginterface dialog, int which) {
// todo auto-generated method stub
imgbtn2.setimagedrawable(getresources().getdrawable(r.drawable.icon2));
}
}).create();
dialog.show();
}
});
imgbtn3.setonclicklistener(new button.onclicklistener()
{
@override
public void onclick(view v) {
// todo auto-generated method stub
dialog dialog=new alertdialog.builder(imagebuttontest.this)
.settitle("提示")
.setmessage("我是imagebutton3,我想使用系统打电话的图标")
.setpositivebutton("确定",new dialoginterface.onclicklistener() {
@override
public void onclick(dialoginterface dialog, int which) {
// todo auto-generated method stub
imgbtn3.setimagedrawable(getresources().getdrawable(android.r.drawable.sym_action_call));
}
}).create();
dialog.show();
}
});
imgbtn4.setonclicklistener(new button.onclicklistener()
{
@override
public void onclick(view v) {
// todo auto-generated method stub
dialog dialog=new alertdialog.builder(imagebuttontest.this)
.settitle("提示")
.setmessage("我是使用的系统图标")
.setpositivebutton("确定",new dialoginterface.onclicklistener() {
@override
public void onclick(dialoginterface dialog, int which) {
// todo auto-generated method stub
//相应的处理操作
}
}).create();
dialog.show();
}
});
}
}
布局文件main.xml
<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<textview
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="imagebutton测试案例"
/>
<imagebutton
android:id="@+id/imagebutton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon1"
/>
<imagebutton
android:id="@+id/imagebutton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<imagebutton
android:id="@+id/imagebutton3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<imagebutton
android:id="@+id/imagebutton4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</linearlayout>
运行效果如下:
点击第一个按钮后
点击确定后,点击第二个按钮
点击确定,此时会看到按钮二的图标编程和按钮三的图标一样了
点击按钮三
点击确定后,发现按钮三的图标变成了系统打电话的图标
点击按钮四
以上就是android ui控件系列:imagebutton(带图标的按钮)的内容。