zyyoona7 / EasyPopup

「暂停维护」PopupWindow Wrapper. 对 PopupWindow 的封装。可指定相对于 anchor view 各个方位弹出,设置背景变暗,指定 ViewGroup 背景变暗等特性。
Apache License 2.0
1.54k stars 214 forks source link

请教一个问题 #40

Open liuchenc opened 6 years ago

liuchenc commented 6 years ago

就是pop在recyclerview的item的一个view点击触发之后位于该view的下方弹出.有时候会出现这么个情况,就是会被该item遮挡住,请问这是什么引起的?

zyyoona7 commented 6 years ago

所有系统版本吗?还是个别手机呢?

liuchenc commented 6 years ago

我拿几个手机试了下,貌似都有这个问题,应该是复用导致的

zyyoona7 commented 6 years ago

可以提供一下代码吗?我测试一下

liuchenc commented 6 years ago

我是写在项目里的,不是写在demo里的.你可以用recyclerview模拟一点数据,item上面给个button,点击的时候弹出pop,这样测试一下

zyyoona7 commented 6 years ago

我这测试没发现这问题,小米8 Android P 和 模拟器都没有发现遮挡,Adapter 代码:

public class RecyclerPopAdapter extends BaseQuickAdapter<String, BaseViewHolder> {

    private View.OnTouchListener mOnTouchListener;
    private EasyPopup mRvPop;

    public RecyclerPopAdapter() {
        super(R.layout.layout_item_pop, null);

    }

    @Override
    protected void convert(BaseViewHolder baseViewHolder, String s) {
//        baseViewHolder.addOnClickListener(R.id.iv_close);
//        baseViewHolder.itemView.setOnTouchListener(mOnTouchListener);
        AppCompatImageButton closeIv=baseViewHolder.getView(R.id.iv_close);
        if (mRvPop==null) {
            initPop(closeIv.getContext());
        }
        closeIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mRvPop.showAtAnchorView(v, YGravity.ABOVE, XGravity.LEFT);
            }
        });
    }

    private void initPop(Context context){
        mRvPop = EasyPopup.create()
                .setContext(context)
                .setContentView(R.layout.layout_right_pop)
                .setAnimationStyle(R.style.RightTopPopAnim)
//                .setHeight(700)
//                .setWidth(600)
                .setFocusAndOutsideEnable(true)
//                .setBackgroundDimEnable(true)
//                .setDimValue(0.5f)
//                .setDimColor(Color.RED)
//                .setDimView(mTitleBar)
                .apply();
    }

    public void setOnTouchListener(View.OnTouchListener onTouchListener) {
        this.mOnTouchListener = onTouchListener;
    }
}
liuchenc commented 6 years ago

哦,那应该是我自己写的哪里有问题,我再找找看