在项目开发过程中,多处用到相同布局的控件,这时我们就可以选择组合控件,节约代码,还利于维护。
一、概念
组合控件,把现有的控件根据自己的需求组合到一起形成一个新的控件。这些小的控件多是系统自带的控件。比如很多应用中普遍使用的标题栏控件,其实用的就是组合控件。
二、示例
1.新建一个android项目,创建自定义view的布局文件group_view.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="match_parent"
android:gravity="center"
android:orientation="vertical">
<Button
android:id="@+id/bt_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:background="#ff6699"
android:text="组合一" />
<Button
android:id="@+id/bt_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="40dp"
android:background="#ff6699"
android:text="组合二" />
</RelativeLayout>
2、创建一个类GroupView,继承自RelativeLayout:
public class GroupView extends RelativeLayout {
private Button mBtLeft;
private Button mBtRight;
public GroupView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.group_view, this);
mBtLeft = (Button) findViewById(R.id.bt_left);
mBtRight = (Button) findViewById(R.id.bt_right);
}
//为button设置点击事件
public void setBtLeftListener(OnClickListener leftListener){
mBtLeft.setOnClickListener(leftListener);
}
public void setBtRightListener(OnClickListener rightListener){
mBtRight.setOnClickListener(rightListener);
}
}
3、在需要用到的Acivity的xml中引入自定义的view,例如:group_activity.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="match_parent"
android:orientation="vertical">
<demo.view.cn.viewtest.GroupView
android:id="@+id/group_view_bt"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</demo.view.cn.viewtest.GroupView>
</RelativeLayout>
4、在GroupActivity中获取自定义的view,并且实现自定义的点击事件:
public class GroupActivity extends Activity {
private GroupView mGroupViewBt;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.group_activity);
init();
}
public void init(){
mGroupViewBt = (GroupView)findViewById(R.id.group_view_bt);
mGroupViewBt.setBtLeftListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(GroupActivity.this, "点击了left按钮", Toast.LENGTH_SHORT).show();
}
});
mGroupViewBt.setBtRightListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(GroupActivity.this, "点击了Right按钮", Toast.LENGTH_SHORT).show();
}
});
}
}
5.运行效果如下:
好了。以上自定义组合控件已介绍完毕。
大家可以根据自己的需求制定自己需要控件。
欢迎点赞评论~~~