自定义View中的控件响应需要用回调机制来完成。
以TopBar为例,
需要在TopBar中定义一个接口
public interface TopBarListener
{
public void leftClick();
public void rightClick();
}
需要暴露一个方法给调用者,并且需要一个变量映射调用者传进来的接口
private TopBarListener listener;
........
public void SetOnTopBarClickListener(TopBarListener listener)
{
this.listener = listener;
}
只需要在对应的点击事件实现回调方法即可
leftButton.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
listener.leftClick();
}
});
使用
tBar = (TopBar) findViewById(R.id.topbar);
tBar.SetOnTopBarClickListener(new TopBarListener()
{
public void rightClick()
{
Toast.makeText(getApplicationContext(), "right", Toast.LENGTH_SHORT).show();
}
public void leftClick()
{
Toast.makeText(getApplicationContext(), "left", Toast.LENGTH_SHORT).show();
}
});