25

水平方向にスクロールするウィンドウに、テキストと画像を列に表示するビューがあります。リフローするため、(少なくとも潜在的に) コンテンツの変更に応じてサイズが変更されます。また、ソフト キーボードが出入りしてビューの高さが変わると、リフローしてサイズ変更します (ほぼ一定の領域を維持します)。

私が見つけたのは、 requestLayout()の呼び出しが(onMeasure()オーバーロードへの呼び出しをトリガーするという意味で) ほとんどの場合機能することですが、 onSizeChanged()ハンドラーから呼び出された場合は機能しません。

呼び出したRunnableをpost()してから、後で実行する必要があるコードを呼び出した別のコードを ed することで、これを回避できました...しかし、これは少し壊れやすいようです (遅延を追加したくありません。それでも、秒が async の後に実行されることを確認したいのですが、おそらくイベントループを非常に多く通過するため、画面が点滅しすぎます。requestLayout()post()RunnableonMeasure()RunnableonMeasure()

次のonDraw()の前に(そしておそらく別の) をonSizeChanged()強制的に発生させる方法はありますか?onMeasure()onSizeChanged()

4

3 に答える 3

1

コールバッククラスを作成することをお勧めします。おそらく2つです

    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);
     }
 }

これがお役に立てば幸いです。頑張ってください。

于 2014-05-03T03:06:00.750 に答える
0

ビューの実装には、子ビューと親レイアウト内のビューの配置を変更できるonlayoutコールバック メソッドがあります。

于 2016-02-02T12:37:15.953 に答える