组合控件

Android 定制控件有三种方式:
继承其它控件类(EditText、Button)
 组合方式。当前控件类从容器类继承,并将若干个控件添加到当前的容器中。
 绘制控件,也就是控件类从View继承,并在onDraw方法中从零绘制控件。例如,TextView。


下面介绍一个最经常,最频繁用的组合控件的例子:

mybutton.xml
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="horizontal"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    >  
<ImageView  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:id="@+id/iv"  
    android:src="@drawable/ok"  
    android:paddingTop="5dip"  
    android:paddingBottom="5dip"  
    android:paddingLeft="40dip"  
    android:layout_gravity="center_vertical"  
    />  
<TextView  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:text="确定"  
    android:textColor="#000000"  
    android:id="@+id/tv"  
    android:layout_marginLeft="8dip"  
    android:layout_gravity="center_vertical"  
    />  
</LinearLayout>  


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

public class MyButton extends LinearLayout {
	private ImageView mIv;
	private TextView mTv;
	public MyButton(Context context) {
		this(context,null);
	}
	public MyButton(Context context, AttributeSet attrs)
	{
		super(context,attrs);
		LayoutInflater.from(context).inflate(R.layout.mybutton, this, true);
		mIv = (ImageView)findViewById(R.id.iv);
		mTv = (TextView)findViewById(R.id.tv);
	}
	public void setImageResource(int resId)
	{
		mIv.setImageResource(resId);
	}
	public void setTextViewText(String text)
	{
		mTv.setText(text);
	}
}


应用:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    
    <com.example.mybu.MyButton 
         android:id="@+id/bt_confirm"  
         android:layout_width="wrap_content"  
         android:layout_height="wrap_content"  
         android:layout_alignParentBottom="true"  
         android:clickable="true"  
         android:background="#FF0000"
         android:focusable="true"  
        />

</RelativeLayout>


实现:
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends Activity {
	
	private MyButton but;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		but = (MyButton)findViewById(R.id.bt_confirm);
		but.setTextViewText("好的");
		but.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				but.setTextViewText("確定");
			}
		});
	}

}

猜你喜欢

转载自18767136122.iteye.com/blog/2097835