1、制作一个控件的xml样式。这里我们要做出一个标题控件,包含三个基础控件,两个button,一个TextView,第一个button在最左端,TextView在中间,另一个button在右边。大致功能“返回(退出)--标题内容---编辑(或其他)”。XML如下:(title.xml)
2、编写控件的逻辑代码,新建.java文件,进行针对title.xml中LinearLayout布局的重写,并添加控件功能代码。(TitleLayout.java) 通过构造函数实现TitleLayout控件的样式加载,关联title.xml,并给布局中的两个button赋予逻辑。 package com.example.dingshuo.uitest; import android.app.Activity; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Toast; /** * Created by DINGSHUO on 2015/6/8. */ public class TitleLayout extends LinearLayout { public TitleLayout(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.title, this); Button btnBack=(Button)findViewById(R.id.btnBac); Button btnEdit=(Button)findViewById(R.id.btnEdit); btnBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ((Activity) getContext()).finish(); } }); btnEdit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getContext(),"你点击了Edit按钮",Toast.LENGTH_SHORT).show(); } }); } } 3、使用自定义控件。在MainActivity.xml中加入如下代码: <com.example.dingshuo.uitest.TitleLayout android:layout_width="match_parent" android:layout_height="wrap_content"></com.example.dingshuo.uitest.TitleLayout> 简单的控件自定义方式已经实现了,以后可以根据实际情况制定更复杂的控件。
2、编写控件的逻辑代码,新建.java文件,进行针对title.xml中LinearLayout布局的重写,并添加控件功能代码。(TitleLayout.java)
通过构造函数实现TitleLayout控件的样式加载,关联title.xml,并给布局中的两个button赋予逻辑。
package com.example.dingshuo.uitest;
import android.app.Activity; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Toast;
/** * Created by DINGSHUO on 2015/6/8. */ public class TitleLayout extends LinearLayout { public TitleLayout(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.title, this);
Button btnBack=(Button)findViewById(R.id.btnBac); Button btnEdit=(Button)findViewById(R.id.btnEdit);
btnBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ((Activity) getContext()).finish(); } });
btnEdit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getContext(),"你点击了Edit按钮",Toast.LENGTH_SHORT).show(); } }); } }
3、使用自定义控件。在MainActivity.xml中加入如下代码:
<com.example.dingshuo.uitest.TitleLayout android:layout_width="match_parent" android:layout_height="wrap_content"></com.example.dingshuo.uitest.TitleLayout>
简单的控件自定义方式已经实现了,以后可以根据实际情况制定更复杂的控件。