android 自定义LinearLayout

接着上一篇,本篇玩一下自定义LinearLayout,直接上代码:

1. attr.xml




    
    
        
        
        
    

    
    
        
        
            
            
        
    


2.继承LinearLayout重新定义一个:

package com.test.customviewtest;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MyLinearLayout extends LinearLayout {

	public MyLinearLayout(Context context, AttributeSet attrs) {
		super(context, attrs);
		int resouceId = -1;
		TypedArray MyTypeArray = context.obtainStyledAttributes(attrs,
				R.styleable.MyLinearLayout);

		TextView tv = new TextView(context);
		EditText et = new EditText(context);

		int N = MyTypeArray.getIndexCount();// N=2
		for (int i = 0; i < N; i++) {
			int attr = MyTypeArray.getIndex(i);
			switch (attr) {

			case R.styleable.MyLinearLayout_Text:
				resouceId = MyTypeArray.getResourceId(
						R.styleable.MyLinearLayout_Text, 0);
				tv.setText(resouceId > 0 ? MyTypeArray.getResources().getText(
						resouceId) : MyTypeArray
						.getString(R.styleable.MyLinearLayout_Text));
				break;

			case R.styleable.MyLinearLayout_Orientation:
				resouceId = MyTypeArray.getInt(
						R.styleable.MyLinearLayout_Orientation, 0);
				this.setOrientation(resouceId == 1 ? LinearLayout.HORIZONTAL
						: LinearLayout.VERTICAL);
				break;
			}
		}
		addView(tv);
		addView(et);
		MyTypeArray.recycle();
	}
}


3.在activity_main.xml 布局中引用自定义LinearLayout:



    


    
    
    
    
    
    

    
    


4. MainActivity.java

 

package com.test.customviewtest;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
}


内容很简单,就不作详细介绍了,看一下demo基本就会搞了!!

你可能感兴趣的:(Android,基础知识)