2012年2月23日木曜日

Viewの階層構造をダンプするスニペット

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
まぁViewっていうかViewGroupですけど。

コード


こうです。あんまり階層が深いとスタックオーバーフローで死ぬと思います。
public static void dumpViewTree(View v, String padding){
  Log.d(TAG, padding + v.getClass().getName());
  if(v instanceof ViewGroup){
   ViewGroup g = (ViewGroup)v;
   for(int i = 0; i < g.getChildCount(); i++){
    dumpViewTree(g.getChildAt(i), padding+" ");
   }
  }
 }

実行

試しにandroid.support.v4.app.ListFragmentのonCreateView()で自動的に生成されるViewをダンプしてみました。 こういう構造してたんですねー。
27152 Util  D  android.widget.FrameLayout
 27152 Util  D   android.widget.LinearLayout
 27152 Util  D    android.widget.ProgressBar
 27152 Util  D   android.widget.FrameLayout
 27152 Util  D    android.widget.TextView
 27152 Util  D    android.widget.ListView

まとめ


デバッグとか動的にView書き換えてる場合とかAPIが勝手に生成するViewについて調べるのに使えるのではないでしょうかー。





0 件のコメント:

コメントを投稿