Android 之 自定义控件用法介绍

自定义效果:实现:图片和文字混合

首先创建需要组合的子布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/myimage"
        android:layout_width="30dp"
        android:layout_height="30dp" />

    <TextView
        android:id="@+id/mytext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="确定" />

</LinearLayout>


编写代码,为自定义控件设置值:
package com.example.userdefinedview;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * 自定义 组建的实现 --
 * 功能:复合组件
 * @author Administrator
 *
 */
public class MyLinearLayout extends LinearLayout {

	// 声明对象属性
	private ImageView myimage;
	private TextView mytext; 
	
	public MyLinearLayout(Context context, AttributeSet attrs) {
		super(context, attrs);
		LayoutInflater.from(context).inflate(R.layout.my_linearlayout,this,true); //视图容器装载
		myimage = (ImageView) findViewById(R.id.myimage); // 获取对象
		mytext = (TextView) findViewById(R.id.mytext);
	}
	
	/**
	 * 设置图片资源
	 * @param resID 资源ID
	 */
	public void setImageViewImageResource(int resID){
		myimage.setImageResource(resID);
	}
	
	/**
	 * 设置文本内容
	 * @param text 字符信息
	 */
	public void setMyTextText(String text){
		mytext.setText(text);
	}
	
}



主布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <com.example.userdefinedview.MyLinearLayout
        android:id="@+id/my1"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:background="#ff00ff"
         />

    <com.example.userdefinedview.MyLinearLayout
        android:layout_marginLeft="20dp"
        android:id="@+id/my2"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
       	android:background="#ff00ff"
       />

</LinearLayout>




主程序入口代码:
package com.example.userdefinedview;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends Activity {

	private MyLinearLayout my1;
	private MyLinearLayout my2;

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

		my1 = (MyLinearLayout) findViewById(R.id.my1);
		my2 = (MyLinearLayout) findViewById(R.id.my2);

		my1.setImageViewImageResource(R.drawable.a1);
		my1.setMyTextText("确定");

		my2.setImageViewImageResource(R.drawable.a6);
		my2.setMyTextText("取消");

		my1.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				
				Toast.makeText(MainActivity.this, "点击了确定",Toast.LENGTH_LONG).show();
			}
		});
		my2.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				Toast.makeText(MainActivity.this, "点击了取消",Toast.LENGTH_LONG).show();
			}
		});
	}



}

猜你喜欢

转载自sunzone.iteye.com/blog/1998129