StatusUI
StatusUI copied to clipboard
点击事件无法监听
StatusProvider
if(p instanceof FrameLayout){
this.container = (FrameLayout) p;
this.callback.onCreate(0, getStatusView());
}else{
throw new RuntimeException(contentView.getClass().getName() + "必须作为FrameLayout的子元素");
}
在 StatusProvider类的构造方法中添加了 this.callback.onCreate(0, getStatusView());
设置点击事件,无响应
public void onCreate(int status, View statusView) {
TextView tv = (TextView) statusView.findViewById(R.id.btn_retry);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "1231231321", Toast.LENGTH_LONG).show();
}
});
这里的点击事件无法监听。
不知道是怎么回事呢?
this.callback.onCreate(0, getStatusView()); 改成 this.callback.onCreate(0, statusView);
getStatusView()又重新生成一个View了,但显示的还是第一次getStatusView()的View,估计就这个原因了
不好意思,这个库放这里也不维护了,代码都放在公司项目的库里维护了
getStatusView这个方法名起的也不好,容易造成误解,应该是createStatusView
嗯,是的,这样修改就可以了
public void showStatusView(){
if(statusView == null){
statusView = getStatusView();
this.callback.onCreate(status, statusView);
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
container.addView(statusView, lp);
}
statusView.setVisibility(View.VISIBLE);
statusView.bringToFront();
}
在 showStatusView 方法中添加这句话就可以 this.callback.onCreate(status, statusView);