MyTitle:
package com.stu.myview;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.stu.R;
/***
*
* @Description: 自定义Title
* @author maizi
* @date 2014-4-28 下午4:40:44
*
* a. 对于重写其他的组件, 可以不写接口, 直接用原生态的事件。 直接用原生态提供的方法。 自定义组件需要重写构造器:
* 1:若自定义组件是用XML配置文件的方式创建出来的,则需要重写***(Context con,AttributeSet attrs)构造方法
* 2:若自定义组件是用纯JAVA代码NEW出来的,则只需重写***(Context con)构造方法
* 注:自已定义一个组件给其它程序用时,不知道其它程序到底是用什么方式来创建此组件的,所以两个构造器都要重写
*
*
*/
public class MyTitle extends RelativeLayout {
private TextView title;
private Button leftBtn;
private Button rightBtn;
private Context context;
public MyTitle(Context context) {
super(context);
}
public MyTitle(Context context, AttributeSet attrs) {
super(context, attrs);
context = this.context;
View view = LayoutInflater.from(context).inflate(com.stu.R.layout.title_layout, this, true);
title = (TextView) view.findViewById(R.id.tv_title);
leftBtn = (Button) view.findViewById(R.id.btn_left);
rightBtn = (Button) view.findViewById(R.id.btn_right);
}
public void setBtnMsg(String msg, Button btn) {
btn.setText(msg);
}
public void setTitleMsg(String msg) {
title.setText(msg);
}
public void setLeftBtnOnClickListener(final TitleBtnOnclickListener btnOnclickListener) {
leftBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
btnOnclickListener.onClick();
}
});
}
public void setRightBtnOnClickListener(final TitleBtnOnclickListener btnOnclickListener) {
rightBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
btnOnclickListener.onClick();
}
});
}
public TextView getTitle() {
return title;
}
public void setTitle(TextView title) {
this.title = title;
}
public Button getLeftBtn() {
return leftBtn;
}
public void setLeftBtn(Button leftBtn) {
this.leftBtn = leftBtn;
}
public Button getRightBtn() {
return rightBtn;
}
public void setRightBtn(Button rightBtn) {
this.rightBtn = rightBtn;
}
public interface TitleBtnOnclickListener {
public void onClick();
}
}
title_layout.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="80dp" android:orientation="vertical"> <Button android:id="@+id/btn_left" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:text="返回"/> <TextView android:id="@+id/tv_title" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_toRightOf="@+id/btn_left" android:layout_toLeftOf="@+id/btn_right" android:text="Title标题" android:gravity="center" android:textSize="10pt"/> <Button android:id="@+id/btn_right" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true" android:text="设置"/> </RelativeLayout>
MainActivity
package com.stu.activity; import android.app.Activity; import android.os.Bundle; import android.widget.Toast; import com.stu.R; import com.stu.myview.MyTitle; import com.stu.myview.MyTitle.TitleBtnOnclickListener; /*** * * @Description: * @author maizi * @date 2014-4-28 下午4:44:48 */ public class MainActivity extends Activity{ private MyTitle myTitle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myTitle = (MyTitle) findViewById(R.id.mytitle); initView(); } public void initView(){ myTitle.setBtnMsg("返回_new", myTitle.getLeftBtn()); myTitle.setBtnMsg("设置_new",myTitle.getRightBtn()); myTitle.setTitleMsg("自定义Title"); myTitle.setLeftBtnOnClickListener(new TitleBtnOnclickListener() { @Override public void onClick() { Toast.makeText(MainActivity.this, "你按动了左边的按钮", Toast.LENGTH_SHORT).show(); } }); myTitle.setRightBtnOnClickListener(new TitleBtnOnclickListener() { @Override public void onClick() { Toast.makeText(MainActivity.this, "你按动了右边的按钮", Toast.LENGTH_SHORT).show(); } }); } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.stu.myview.MyTitle android:id="@+id/mytitle" android:layout_width="fill_parent" android:layout_height="wrap_content"> </com.stu.myview.MyTitle> <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:text="自定义Title组件学习" android:textSize="10pt" /> </LinearLayout>