xujiaji/HappyBubble

碰到的一些问题

edifangyi opened this issue · 9 comments

1、这种方式打开 dialog 会导致 dialog 展示在屏幕左上角,而不会显示在mIvMainToolLayer的左边。

image

image

2、IllegalStateException:The specified child already has a parent. You must call removeView() on the child's parent first.
当我在外层新建View,因为需要在其他界面对view做一些操作。我的想法是 Dialog一直是存活的,只是展示和隐藏

重复new 的时候会引发上述异常崩溃。
image

第一个问题,这么写倒是解决了

if (mCurrentDialog.isShowing()) {
mCurrentDialog.setClickedView(mIvMainToolLayer).dismiss();
} else {
mCurrentDialog.setClickedView(mIvMainToolLayer).show();
}

3、自定义View的时候,最外层容器的宽度好像不起作用
image

4、添加、删除布局,Dialog锚点疑问
首次打开的时候:
qq_pic_merged_1515382520149

添加布局后:
image

使用Demo中按钮测试如下代码
固定点理应是箭头的位置,但不管是添加list还是删除list,其固定位置始终是Dialog上边的位置。

增加

_screenshot_2018-01-08-11-51-29-066_bubbledialo
screenshot_2018-01-08-11-51-54-521

删除

screenshot_2018-01-08-11-54-46-627
screenshot_2018-01-08-11-54-17-436

代码

r4 8 k9h9th5h__16 oc

image

第一个问题

mIvMainToolLayer没有被初始化,所以mIvMainToolLayer位置没有被确认。
你可以通过:

        mIvMainToolLayer.post(new Runnable()
        {
            @Override
            public void run()
            {
                //此时mIvMainToolLayer位置已经被初始化,将初始化Dialog代码在这里调用
            }
        });

第二个问题

你初始化的mView已经被上一个Dialog所添加,所以不能重新在新的布局中添加,你需要重新实例化一个新的mView。

第三个问题

目前是有这个问题,我看怎么解决一下,现在你可以通过内层布局将外层布局撑开

关于第四个问题我没有考虑到布局变化情况下Dialog需要做出相应的改变,多谢提醒,我尽快解决

@edifangyi 我打了一个aar包,你试试能否解决你布局变化后的问题
aar包.zip

@xujiaji
添加数据时,
位置在左右时,是上下高度对称展开,上下同时变宽。
位置在上时,Dialog上边不到屏幕边缘,是正常的。当上边到屏幕上的时候,箭头开始移动
位置在下时,相反。

删除的时候,位置左右,上下高度也是对称收缩,但是伴有箭头闪烁

这里是挺麻烦的,辛苦了~

@edifangyi 能不能发个视频呢?方便看下什么情况

@xujiaji QQ 87649669