gpt4 book ai didi

android - 从 onSizeChanged() 调用 requestLayout() 没有效果?

转载 作者:IT老高 更新时间:2023-10-28 23:16:30 25 4
gpt4 key购买 nike

我有一个在水平滚动窗口中按列显示文本和图像的 View 。它重排,因此(至少可能)随着内容的变化而调整自己的大小;当软键盘来来去去以及 View 高度发生变化时,它也会重新排列和调整大小(保持大致恒定的区域)。

我发现调用 requestLayout()大部分时间都可以工作(从某种意义上说,它确实触发了对我的 onMeasure() 重载的调用)...但是当从我的 onSizeChanged() 调用时处理程序。

我能够通过 post() 解决这个问题输入 Runnable调用 requestLayout() 然后 post()ed 另一个 Runnable 调用我的代码需要在 onMeasure() 之后运行 ...但这似乎有点脆弱(我不想添加延迟,但我确实想确保我的第二个 Runnable 确实在异步 之后执行onMeasure()) 并且,可能是因为它通过事件循环的次数太多,屏幕闪烁太多。

是否有某种方法 - 在 onSizeChanged() 中 - 强制 onMeasure() (可能还有另一个 onSizeChanged() ) 在下一个 onDraw() 之前发生?

最佳答案

我建议做一个回调类,也许两个

    interface ImGonnaTellClassBThatClassAdidFinished(){

void ClassHasFinishedProcessing(String YaySuccess);

void ClassHasFailedProcessing();

void SomethingWackaDoodleHappened(String SomeShyte);
}

然后在需要执行功能时重载该类

     public class FunctionA{
ImGonnaTellClassBThatClassAdidFinished someName = new ImGonnaTellClassBThatClassAdidFinished(){
@Override
void ClassHasFinishedProcessing(String YaySuccess){
//Well I should Call class B with the info then
//Heres Sting YaySuccess, Use it in the right way
}
void ClassHasFailedProcessing(){
//Well I failed and should let someone know
}
void SomethingWackaDoodleHappened(String SomeShyte){
//Well Something else happened and I have some info on it
}
//Dont forget to pass it to the class
ClassB doWorkMeow = new ClassB();
doWorkMeow.hereYouGo(someName);
}

请务必在完成后回电

     class ActivityB(){

public void hereYouGo(ImGonnaTellClassBThatClassAdidFinished finished){
String itWorked = new String("Hooray");
finished.ClassHasFinishedProcessing(itWorked);
}
}

希望这对您有所帮助,祝您工作顺利。

关于android - 从 onSizeChanged() 调用 requestLayout() 没有效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com