4

Androidで動的にビルドするときは、呼び出しViewて「親」に追加する必要がありますViewGroup

myLinearLayout.addView(myView);

ViewGroup優れたonHierarchyChangeListenerを介して追加されるすべての子を監視できることはわかっていますが、私の場合はフィードバックView自体が必要です。したがって、私の質問は次のとおりです。

View.onAddedToParent()構築できるコールバックやリスナーのようなものはありますか?

明確にするために、ビューですべてを独自に処理する必要があります。「親」でイベントをキャッチして、ビューに物事を通知できるという事実を認識していますが、これは望ましくありません。ビューを変更することしかできません

編集: onAttachStateChangeListenerを見つけたところ、ほとんどの状況で機能するように見えますが、これが本当に正しい解決策であるかどうか疑問に思っています。窓から切り離されずに、次Viewから次へと受け継がれるかもしれないと私は考えています。ViewGroupそのため、イベントを受け取りたくても受け取りません。洞察力があれば、これについて詳しく教えていただけますか?

前もって感謝します

4

3 に答える 3

5

カスタムビューを作成し、その onAttachedToWindow で自分のことを行うことができます

public class CustomView extends View {

   public CustomView(Context context) {
       super(context);
   }

   @Override
   protected void onAttachedToWindow() {
       super.onAttachedToWindow();
       Log.d("CustomView", "onAttachedToWindow called for " + getId());
       Toast.makeText(getContext(), "added", 1000).show();
   }
}

カスタムビューが必要な正しいビューグループに追加されていることを確認したい場合

@Override
 protected void onAttachedToWindow() {
    // TODO Auto-generated method stub
    super.onAttachedToWindow();

    if(((View)getParent()).getId()== R.id.relativelayout2)
    {           
        Log.d("CustomView","onAttachedToWindow called for " + getId());
        Toast.makeText(context, "added", 1000).show();          
    }

}
于 2013-10-09T10:55:03.020 に答える