xujiaji / HappyBubble

:thought_balloon:BubbleLayout随意变化的气泡布局、消息对话框,可定制颜色,背景、弧度、尖角弧度、边框等等。BubbleDialog气泡弹窗根据点击View的位置定位它的弹窗位置,BubbleDialog可定制方向等!(BubbleLayout changes freely,BubbleDialog click on the location of View positioning its location,BubbleDialog can be customized directions.)
Apache License 2.0
716 stars 113 forks source link

弹dialog会影响输入框输入,可有解决办法? #8

Closed Selina592732122 closed 6 years ago

Selina592732122 commented 6 years ago

如图,底部Edittext要输入内容,此时有弹框,edittext就会失去焦点,可有解决办法? qq 20180816090440

xujiaji commented 6 years ago

你是说dialog弹出后,键盘收下去了?

Selina592732122 commented 6 years ago

是的,而且edittext失去焦点,因为dialog此时覆盖整个activity的,可有解决办法?

xujiaji commented 6 years ago

确实,这个好像不好办。我现在的思路是,你在列表上面覆盖一层布局。自己添加BubbleLayout,位置的处理逻辑你大概可以参照BubbleDialog。如果其他解决办法的话,你可以找找有没有关于dialog弹出后不让键盘消失的这类问题。因为BubbleDialog就是个直接继承Dialog的类

Selina592732122 commented 6 years ago

若用toast可行吗?

xujiaji commented 6 years ago

想法不错,因该可行!不过还是得自己计算位置

xujiaji commented 6 years ago

@Selina592732122 想了下我感觉直接覆盖一层布局上去也许会轻松很多

Selina592732122 commented 6 years ago

toast位置不好控制好像

xujiaji commented 6 years ago

这方面我不清楚,没涉及过toast的位置控制

xujiaji commented 6 years ago

image 相对而言你通过这些属性来控制,然后在父布局中调整位置还是很简单的,因为你的列表很有规则

Selina592732122 commented 6 years ago

我是怕到时候底层的列表滚动起来,就麻烦了

xujiaji commented 6 years ago

滚动肯定要隐藏呀!要不然对话框指着谁。。。

Selina592732122 commented 6 years ago

你的意思是在列表上一层,画固定12个BubbleLayout,然后代码去控制显示隐藏?

xujiaji commented 6 years ago

。。。 这也太夸张了,如果以你这个思路的话,建议你固定三个就行了。然后显示的时候,在这三个中对应位置显示哪个,然后调整BubbleLayouttopMargin移动到列表item的对应位置

Selina592732122 commented 6 years ago

好的,理解你意思了,一个BubbleLayout,代码去固定位置

xujiaji commented 6 years ago

是的,逻辑其实和DialogBubble里面的逻辑是一样的。只是一个是放在了Dialog,你现在要放在一个比如FrameLayout里面而已

Selina592732122 commented 6 years ago

我按照你的思路,位置会有偏差,大神能否给个demo?

xujiaji commented 6 years ago

你是不是没有减去距离顶部的高度?

Selina592732122 commented 6 years ago

是水平方向有问题,我把你param.x当成paddingLeft来设置,会出现部分文字显示在屏幕外,不懂为啥

xujiaji commented 6 years ago

那我试试吧

xujiaji commented 6 years ago

BubbleLayoutTest.zip 你看一下,大概这样计算,你还需要调整一下。 真尴尬,我看着那一大堆的计算数据我自己现在都有点蒙圈了。

Selina592732122 commented 6 years ago

好的,实在太感谢👍,我明天看看

Selina592732122 commented 6 years ago

qq 20180817091806 当布局在左边时,文字会被遮挡,是不是少算了啥?

Selina592732122 commented 6 years ago

我自己调了,多了些if判断,谢谢大神

xujiaji commented 6 years ago

是的,看你自己的情况判断就行。要点击隐藏,给FrameLayout加个点击事件隐藏就OK

Selina592732122 commented 6 years ago

测试一下,发现BubbleLayout的宽高必须在xml写死,不然会影响位置判断,如:layout_height=wrap_content,垂直方向有误差,因为我弹框的文字多少,会影响高度变化,代码中获取的高度可能是上一次的高度,本次高度好像获取不到;

xujiaji commented 6 years ago

可以设置值后,直接调用measure测量一下试试

Selina592732122 commented 6 years ago

你好,之前我用你的BubbleLayout,把它放在popupwindow,实现泡泡功能,但是发现点击到BubbleLayout的时候,报错如下,能有啥办法,在不去更改你的代码的情况下,避免这个错误? qq 20180903180717

xujiaji commented 6 years ago

这是一个bug,忘记判断是否为null了。你现在可以通过setOnClickEdgeListener设置一个监听就可以了,或者等我晚上更新一下

Selina592732122 commented 6 years ago

好的,谢谢