我这里使用的是自定义组合view点击事件的接口回调,底层还是调用的android原生的OnClickListener事件。效果图:
三步实现自定义view点击事件的接口回调。
第一步:写一个自己的点击事件的接口
public interface ClickListener {
void Click(View v);
}
第二步:写一个自定义view,我这里以我的组合view例
public class TypeCardTopCustomView extends LinearLayout {
private LinearLayout llLeft, llMiddle, llRight;
private ClickListener clickListener;
public TypeCardTopCustomView(Context context) {
super(context);
init(context);
}
public TypeCardTopCustomView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public TypeCardTopCustomView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(final Context context) {
View view = LayoutInflater.from(context).inflate(R.layout.view_custom_card_type, this);
llLeft = (LinearLayout) view.findViewById(R.id.ll_left_custom_bottom_fragment_home);
llMiddle = (LinearLayout) view.findViewById(R.id.ll_middle_custom_bottom_fragment_home);
llRight = (LinearLayout) view.findViewById(R.id.ll_right_custom_bottom_fragment_home);
llLeft.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (clickListener != null) {
clickListener.Click(v);
}
}
});
llMiddle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (clickListener != null) {
clickListener.Click(v);
}
}
});
llRight.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (clickListener != null) {
clickListener.Click(v);
}
}
});
}
/**
* 这个方法等同于setOnClickListener
* @param clickListener 这个接口就是OnClickListener
*/
public void setCustomOnClickListener(ClickListener clickListener) {
this.clickListener = clickListener;
}
}
第三步:调用setCustomOnClickListener方法。
TypeCardTopCustomView customView = (TypeCardTopCustomView) findViewById(R.id.custom1)
customView.setCustomOnClickListener(new ClickListener() {
@Override
public void Click(View v) {
switch (v.getId()) {
case R.id.ll_left_custom_bottom_fragment_home:
Toast.makeText(MainActivity.this, "left", Toast.LENGTH_SHORT).show()
break
case R.id.ll_middle_custom_bottom_fragment_home:
Toast.makeText(MainActivity.this, "middle", Toast.LENGTH_SHORT).show()
break
case R.id.ll_right_custom_bottom_fragment_home:
Toast.makeText(MainActivity.this, "right", Toast.LENGTH_SHORT).show()
break
}
}
})
就这样没了。是不是很简单?
项目链接