Android自定义组合控件

自定义组合控件为自定义控件中的一种,由已有的控件组合而成。

1.组合控件的XML布局文件( res/layout/xxx.xml )




2.设置组合控件的属性的XML文件 ( res/value/attrs.xml )



    
    
        
        
        
        
        
            
            
            
        
        
    

declare-声明  styleable-风格  attr-属性  flag-标识、标志

3.创建自定义组合控件类( app / java / 包名 / xxx.java ) 

public class MyView extends View {
    private int i;
    private TextView textView;
    public MyView(Context context) {
        super(context);
        //用于Java文件中的构造函数
    }
    
    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        //用于XML布局文件中的构造函数
        getAttrs(context,attrs);
        setView(context);
    }
    
    private void getAttrs(Context context,AttributeSet attrs){
        //获取属性值
        TypedArray typedArray=context.obtainStyledAttributes(attrs,R.styleable.MyView);
        
        i=typedArray.getInt(R.styleable.MyView_attrN2,1);
        //typedArray.getString  typedArray.getBoolean

        //回收
        typedArray.recycle();
    }
    
    private void setView(Context context){
        LayoutInflater.from(context).inflate(R.layout.myview,this);
        
        textView=(TextView) findViewById( ~ );
        textView.setText(i);
    }
}

获取自定义控件属性值以后一定要回收TypedArray

4.使用自定义组合控件

5.注:自定义控制类需实现方法

public class MyView extends View {
    public MyView(Context context) {
        super(context);
        //用于Java文件中的构造函数
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        //用于XML布局文件中的构造函数

        TypedArray ta=context.obtainStyledAttributes(attrs,R.styleable.MyView);
        LayoutInflater.from(context).inflate(R.layout.myview,this);
    }

你可能感兴趣的:(android,java)