• 最简单的自定义控件实现


    在Android中实现自定义控件只需要三步。

    第一步,写自定义控件的布局文件

    mykjj.xml

    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:orientation="vertical"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent">
    
        <ScrollView
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:id="@+id/scrollView">
            <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent">
                <Button
                        style="?android:attr/buttonStyleSmall"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="New Button"
                        android:id="@+id/button"/>
                <Button
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="New Button"
                        android:id="@+id/button2"/>
                <CheckBox
                        android:layout_width="wrap_content"
                        android:layout_height="fill_parent"
                        android:text="New CheckBox"
                        android:id="@+id/checkBox"/>
            </LinearLayout>
        </ScrollView>
    </LinearLayout>

    第二步,写自定义控件的实现类,注意最简单的实现方式就是初始化三个构造函数,并在初始化函数中通过layoutInflater 实现 对xml文件的映射。

    package com.example.zidingyi_kongjian;
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.LayoutInflater;
    import android.widget.LinearLayout;
    
    /**
     * Created by britzlieg on 14-5-19.
     */
    //自定义控件
    public class mykj extends LinearLayout{
        //一定要有以下的三个构造函数
        public mykj(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            init();
        }
    
        public mykj(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }
    
        public mykj(Context context) {
            super(context);
            init();
        }
        //初始化函数
        private void init(){
            //主要是将XML映射到java文件中,相当于找layout下的xml布局文件,与findviewbyid找widget是一样的原理
            String infService = Context.LAYOUT_INFLATER_SERVICE;
            LayoutInflater layoutInflater;
            layoutInflater = (LayoutInflater)getContext().getSystemService(infService);
            layoutInflater.inflate(R.layout.mykjj,this,true);
        }
    }

    第三步,在主布局文件中加入自定义控件

    <?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:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Hello World, MyActivity"
                />
    <com.example.zidingyi_kongjian.mykj android:layout_width="fill_parent"
                                        android:layout_height="fill_parent">
    
                                        </com.example.zidingyi_kongjian.mykj>
    </LinearLayout>

    总结:

    其实这三步已经可以实现最简单的自定义控件,其他更复杂的自定义控件的实现原理也与这个差不多。

    有兴趣可以参考一下这篇博文:http://www.cnblogs.com/Greenwood/archive/2011/03/02/1969325.html

  • 相关阅读:
    Linux之权限
    Linux基础和文件操作
    linux之用户、用户组、用户提权
    linux之Vim使用
    java面向对象
    eclipse首选项常用设置
    eclipse中添加项目运行程序
    eclipse的基本配置
    eclipse安装
    Jemter压力测试核心流程
  • 原文地址:https://www.cnblogs.com/starwolf/p/3736412.html
Copyright © 2020-2023  润新知