Activity
クラスにはsetContentView()
メソッドがあります。PopupWindow
クラスにはメソッドがありますが、getContentView()
他には何もありません。アクティビティのメイン コンテンツ ビューを取得する別の方法はありますか?
46624 次
3 に答える
52
次の行はトリックを行います:
findViewById(android.R.id.content);
基本的に同じです(アクティビティのコンテキストで呼び出す必要があります)
this.findViewById(android.R.id.content);
于 2013-01-07T05:42:11.203 に答える
52
この呼び出しでアクティビティの内容にアクセスできました。
ViewGroup view = (ViewGroup)getWindow().getDecorView();
おそらく、すべてのケースで getDecorView が ViewGroup のインスタンスを返すことを確認する必要がありますが、Activity に LinearLayout がある場合、上記のコードは正常に実行されます。LinearLayout に到達するには、次のようにします。
LinearLayout content = (LinearLayout)view.getChildAt(0);
そして、次のような関数がある場合:
void logContentView(View parent, String indent) {
Log.i("test", indent + parent.getClass().getName());
if (parent instanceof ViewGroup) {
ViewGroup group = (ViewGroup)parent;
for (int i = 0; i < group.getChildCount(); i++)
logContentView(group.getChildAt(i), indent + " ");
}
}
アクティビティ内で次の呼び出しを使用して、すべてのビューを反復処理し、それらのクラス名をログに記録できます。
logContentView(getWindow().getDecorView(), "");
于 2010-11-21T20:45:28.070 に答える
3
これも探していますが、最も外側のViewGroupにIDを追加する方が簡単かもしれないと思いました。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/outer">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
ただし、あと数分探し続けます。最も外側のレイアウトからfindViewWithTagを使用できるように、私はそれに夢中になっています。
于 2010-11-21T05:52:59.423 に答える