Jon*_*itz 19 android android-layout
我有一个视图,在水平滚动窗口中以列的形式显示文本和图像.随着内容的变化,它会重新流动并因此(至少可能)自我调整大小; 当软键盘进出并且视图高度发生变化时,它还会回流并调整大小(保持大致恒定的区域).
我发现调用requestLayout()是有效的(在某种意义上它确实触发了对我的onMeasure()重载的调用)大部分时间......但是从我的onSizeChanged()处理程序调用时却没有.
我能够解决此职位()荷兰国际集团一个Runnable的调用requestLayout(),然后post()编另一个Runnable是叫我的代码需要运行后onMeasure()...但是这似乎有点脆弱的(我不希望添加的延迟,但我确实希望确保我的第二个Runnable在异步之后执行,onMeasure()并且可能因为它在事件循环中进行了如此多的传递,屏幕闪烁太多.
在下一个onDraw()之前是否有某种方式 - onSizeChanged()强制一个onMeasure()(可能还有另一个)?onSizeChanged()
我建议给班级打电话,也许两次
interface ImGonnaTellClassBThatClassAdidFinished(){
void ClassHasFinishedProcessing(String YaySuccess);
void ClassHasFailedProcessing();
void SomethingWackaDoodleHappened(String SomeShyte);
}
Run Code Online (Sandbox Code Playgroud)
然后在需要它执行功能时重载该类
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);
}
Run Code Online (Sandbox Code Playgroud)
确保完成后回电
class ActivityB(){
public void hereYouGo(ImGonnaTellClassBThatClassAdidFinished finished){
String itWorked = new String("Hooray");
finished.ClassHasFinishedProcessing(itWorked);
}
}
Run Code Online (Sandbox Code Playgroud)
希望这对您有所帮助,祝您好运。