Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
Selina592732122 opened this issue Aug 16, 2018 · 29 comments
Closed

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

Selina592732122 opened this issue Aug 16, 2018 · 29 comments

Comments

@Selina592732122
Copy link

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

@xujiaji
Copy link
Owner

xujiaji commented Aug 16, 2018

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

@Selina592732122
Copy link
Author

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

@xujiaji
Copy link
Owner

xujiaji commented Aug 16, 2018

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

@Selina592732122
Copy link
Author

若用toast可行吗?

@xujiaji
Copy link
Owner

xujiaji commented Aug 16, 2018

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

@xujiaji
Copy link
Owner

xujiaji commented Aug 16, 2018

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

@Selina592732122
Copy link
Author

toast位置不好控制好像

@xujiaji
Copy link
Owner

xujiaji commented Aug 16, 2018

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

@xujiaji
Copy link
Owner

xujiaji commented Aug 16, 2018

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

@Selina592732122
Copy link
Author

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

@xujiaji
Copy link
Owner

xujiaji commented Aug 16, 2018

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

@Selina592732122
Copy link
Author

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

@xujiaji
Copy link
Owner

xujiaji commented Aug 16, 2018

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

@Selina592732122
Copy link
Author

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

@xujiaji
Copy link
Owner

xujiaji commented Aug 16, 2018

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

@Selina592732122
Copy link
Author

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

@xujiaji
Copy link
Owner

xujiaji commented Aug 16, 2018

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

@Selina592732122
Copy link
Author

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

@xujiaji
Copy link
Owner

xujiaji commented Aug 16, 2018

那我试试吧

@xujiaji
Copy link
Owner

xujiaji commented Aug 16, 2018

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

@Selina592732122
Copy link
Author

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

@Selina592732122
Copy link
Author

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

@Selina592732122
Copy link
Author

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

@xujiaji
Copy link
Owner

xujiaji commented Aug 17, 2018

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

@Selina592732122
Copy link
Author

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

@xujiaji
Copy link
Owner

xujiaji commented Aug 17, 2018

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

@Selina592732122
Copy link
Author

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

@xujiaji
Copy link
Owner

xujiaji commented Sep 3, 2018

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

xujiaji added a commit that referenced this issue Sep 3, 2018
@Selina592732122
Copy link
Author

好的,谢谢

@xujiaji xujiaji closed this as completed Sep 12, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants