Android编程实现自定义控件的方法示例
程序员文章站
2022-07-11 23:19:16
本文实例讲述了android编程实现自定义控件的方法。分享给大家供大家参考,具体如下:
很多时候android常用的控件不能满足我们的需求,那么我们就需要自定义一个控件了...
本文实例讲述了android编程实现自定义控件的方法。分享给大家供大家参考,具体如下:
很多时候android常用的控件不能满足我们的需求,那么我们就需要自定义一个控件了。今天做了一个自定义控件的实例,来分享下。
首先定义一个layout实现按钮内部布局:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <imageview android:id="@+id/imageview1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:paddingbottom="5dip" android:paddingleft="40dip" android:paddingtop="5dip" android:src="@drawable/right_icon" /> <textview android:id="@+id/textview1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginleft="8dip" android:text="确定" android:textcolor="#000000" /> </linearlayout>
接下来写一个类继承linearlayout,导入刚刚的布局,并且设置需要的方法,从而使的能在代码中控制这个自定义控件内容的显示。
public class imagebtn extends linearlayout { private imageview imageview; private textview textview; public imagebtn(context context) { super(context); // todo auto-generated constructor stub } public imagebtn(context context, attributeset attrs) { super(context, attrs); // todo auto-generated constructor stub layoutinflater inflater=(layoutinflater) context.getsystemservice(context.layout_inflater_service); inflater.inflate(r.layout.imagebtn, this); imageview=(imageview) findviewbyid(r.id.imageview1); textview=(textview)findviewbyid(r.id.textview1); } /** * 设置图片资源 */ public void setimageresource(int resid) { imageview.setimageresource(resid); } /** * 设置显示的文字 */ public void settextviewtext(string text) { textview.settext(text); } }
在需要使用这个自定义控件的layout中加入这控件,只需要在xml中加入即可。
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <cn.com.karl.view.imagebtn android:id="@+id/btn_right" android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/btn" /> <cn.com.karl.view.imagebtn android:id="@+id/btn_error" android:layout_marginleft="5dp" android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/btn" /> </linearlayout>
这里用到了背景图片 在drawable/btn.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/btn_normal"></item> <item android:state_pressed="true" android:drawable="@drawable/btn_white"></item> <item android:state_checked="true" android:drawable="@drawable/btn_white"></item> <item android:state_focused="false" android:state_pressed="false" android:drawable="@drawable/btn_normal"></item> </selector>
最后在activity中设置该控件,和其他控件差不多:
public class identifybuttonactivity extends activity { private imagebtn imagebtn1; private imagebtn imagebtn2; @override protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.identifybutton); imagebtn1=(imagebtn) this.findviewbyid(r.id.btn_right); imagebtn2=(imagebtn) this.findviewbyid(r.id.btn_error); imagebtn1.settextviewtext("确定"); imagebtn2.settextviewtext("取消"); imagebtn1.setimageresource(r.drawable.right_icon); imagebtn2.setimageresource(r.drawable.error_icon); imagebtn1.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { // todo auto-generated method stub toast.maketext(getapplicationcontext(), "点击的正确按钮", 1).show(); } }); imagebtn2.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { // todo auto-generated method stub toast.maketext(getapplicationcontext(), "点击的错误按钮", 1).show(); } }); } }
最后看看我们自定义控件的效果吧!
点击后还有按下按钮的效果。
更多关于android相关内容感兴趣的读者可查看本站专题:《android控件用法总结》、《android开发入门与进阶教程》、《android视图view技巧总结》、《android编程之activity操作技巧总结》、《android数据库操作技巧总结》及《android资源操作技巧汇总》
希望本文所述对大家android程序设计有所帮助。