欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发自定义控件全解

程序员文章站 2022-05-31 08:53:26
android开发自定义控件全解,安卓自定义控件:包含linearlayout、relativelayout、gridview、button等。 本文以linearlayout为...

android开发自定义控件全解,安卓自定义控件:包含linearlayout、relativelayout、gridview、button等。

本文以linearlayout为例

首先要有一个自定义xml布局文件

我们这里存储下面的代码为ui_linearlayout.xml文件



  

自定义控件继承自linearlayout

在自定义控件的绑定布局文件,并进行相应的ui初始化,添加自定义的属性和方法。

//自定义组合控件
public class ui_linearlayout extends linearlayout{  
      private view view;
      private layoutinflater layoutinflater;
      private edittext edittext;
      private button clearbutton;

      public ui_linearlayout(context context) {   //自己定义构造函数,可以传递想要的数据进来
        super(context);

        //使用布局资源填充视图
        string infservice = context.layout_inflater_service;
        layoutinflater = (layoutinflater)getcontext().getsystemservice(infservice);  //layoutinflater=layoutinflater.from(context);
        view = layoutinflater.inflate(r.layout.ui_linearlayout, this, true);   //获取当前控件的引用,使用this也行
        //获取对子控件的引用
        edittext = (edittext)findviewbyid(r.id.ui_linearlayout_edittext);
        clearbutton = (button)findviewbyid(r.id.ui_linearlayout_clearbutton);
        //也可以使用代码自己添加
      }

    //组合控件的自定义函数
    private void fun1(string str,drawable images,onclicklistener onclick){
        edittext.settext(str);
        clearbutton.setbackgrounddrawable(images);
        clearbutton.setonclicklistener(onclick);
    }

在activity中添加自定义控件

relativelayout relativelayout = (relativelayout)findviewbyid(r.id.activity1_relativelayout1);
ui_linearlayout myview = new ui_linearlayout(this);
relativelayout .addview(myview);
//myview.fun1(str, images, onclick);   //调用内部函数

在窗口ui布局的xml中添加自定义控件