弹窗里面放ViewPager无法显示
xingguanghuanye opened this issue · 8 comments
和viewpager在另一个项目(wanandroid)有使用,没有发现问题。
你这也没有代码没有日志,我也猜不出来呀!
我的MainActivity里面的MainFragment里面是Scrollview嵌套RecyclerView,在MainActivity中使用了AnyLayer.dialog(),当dialog消失的时候,Scrollview自己滚动到RecyclerView控件置顶,这个问题有遇到过么
这个是焦点切换问题,你网上查下有解决办法的
AnyLayer.dialog()
.contentView(R.layout.app_dialog_select_img)
.backgroundDimAmount(0.5f)
.gravity(Gravity.BOTTOM)
.contentAnimator(new DialogLayer.AnimatorCreator() {
@OverRide
public Animator createInAnimator(View content) {
return AnimatorHelper.createBottomInAnim(content);
}
@Override
public Animator createOutAnimator(View content) {
return AnimatorHelper.createBottomOutAnim(content);
}
})
.onClick(new Layer.OnClickListener() {
@Override
public void onClick(Layer layer, View v) {
switch (v.getId()) {
case R.id.mTvTakePictures:
AnyLayer.toast().message("拍照").show();
break;
case R.id.mTvChooseFromAlbum:
AnyLayer.toast().message("从相册选").show();
break;
}
}
})
.show();
我之前几个页面也是这么写的,都还正常,但今天一个新的页面里面也这么写,结果onCLick()这个方法好像没生效,断点调试的时候发现根本没有运行里面的onClick里面的代码
你没传id呀
if (mLayer != null) {
mLayer.show();
return;
}
mLayer = AnyLayer.dialog(mContext);
mLayer.backgroundDimAmount(0.5f)
.....
.bindData(new Layer.DataBinder() {
@OverRide
public void bindData(Layer layer) {
RecyclerView mRv = layer.getView(R.id.mRv);
mRv.setLayoutManager(new LinearLayoutManager(mContext));
.....
}).show()
提个建议,我虽然做了判断Layer是否为空,但每次调show()之后,bindData()方法内的代码还是会运行一次,这好像不太好,可以优化一下
可以,后面加下!
你可以先传已经绑定好数据的view进去,不要在bindData里绑定了。
if (mLayer != null) {
mLayer.show();
return;
}
mLayer = AnyLayer.dialog(mContext);
mLayer.backgroundDimAmount(0.5f)
.....
.bindData(new Layer.DataBinder() {
@OverRide
public void bindData(Layer layer) {
RecyclerView mRv = layer.getView(R.id.mRv);
mRv.setLayoutManager(new LinearLayoutManager(mContext));
.....
}).show()
提个建议,我虽然做了判断Layer是否为空,但每次调show()之后,bindData()方法内的代码还是会运行一次,这好像不太好,可以优化一下
3.4.3版本新增OnInitialize回调,仅在第一次加载时回调,可以在这里绑定数据