继承其它控件类(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("確定"); } }); } }