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

RichEdit 使用 SetText(...) 后控件无法刷新 #443

Open
pony8158 opened this issue Aug 1, 2022 · 2 comments
Open

RichEdit 使用 SetText(...) 后控件无法刷新 #443

pony8158 opened this issue Aug 1, 2022 · 2 comments

Comments

@pony8158
Copy link

pony8158 commented Aug 1, 2022

问题现象

RichEdit 中的内容要等待某个网络请求回来再进行更新,所以在请求没有回来之前它的GetText()相当于就是空,因此初始时它的大小基本就是 width=1 这样子。

预期结果

请求回来后调用 SetText(...) 后控件可以重绘,重新计算大小。但是这边调用了 Invalidate() 也没用。

重现步骤

@nmgwddj
Copy link
Collaborator

nmgwddj commented Aug 2, 2022

问题现象

RichEdit 中的内容要等待某个网络请求回来再进行更新,所以在请求没有回来之前它的GetText()相当于就是空,因此初始时它的大小基本就是 width=1 这样子。

预期结果

请求回来后调用 SetText(...) 后控件可以重绘,重新计算大小。但是这边调用了 Invalidate() 也没用。

重现步骤

https://github.com/netease-im/NIM_Duilib_Framework/tree/master/examples/controls 该 example 演示从本地读取一个文件内容后设置到 RichEdit 中。类似您的场景从网络 IO 后更新。请参考该示例代码。要注意的事项是要操作 UI 元素,请在网络请求回调后将任务投递到 UI 线程,而不是在回调线程进行更新。

如果您参考示例无法解决问题,请写清楚完整的重现步骤或附上示例代码链接提供我们分析。

@pony8158
Copy link
Author

pony8158 commented Aug 4, 2022

问题现象

RichEdit 中的内容要等待某个网络请求回来再进行更新,所以在请求没有回来之前它的GetText()相当于就是空,因此初始时它的大小基本就是 width=1 这样子。

预期结果

请求回来后调用 SetText(...) 后控件可以重绘,重新计算大小。但是这边调用了 Invalidate() 也没用。

重现步骤

https://github.com/netease-im/NIM_Duilib_Framework/tree/master/examples/controls 该 example 演示从本地读取一个文件内容后设置到 RichEdit 中。类似您的场景从网络 IO 后更新。请参考该示例代码。要注意的事项是要操作 UI 元素,请在网络请求回调后将任务投递到 UI 线程,而不是在回调线程进行更新。

如果您参考示例无法解决问题,请写清楚完整的重现步骤或附上示例代码链接提供我们分析。

这里SetText(...)是没问题的, 问题是SetText(...)后 RichEdit 大小没有重绘,任务本来就是投递到UI线程执行的。现在问题是如果不在RichEdit其父控件正常初始化时进行SetText(...)操作,而是在网络请求回来进行的SetText(...)那么就不会触发RichEdit根据具体文字多少来重新计算大小。

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