Android:如何获取活动的顶级父布局

时间:2017-01-16 06:40:40

标签: android android-layout

我想获得此示例android xml布局的顶级布局。我所指的顶级是ViewGroup,它将整个活动结合在一起。

我知道

getWindow().getDecorView().findViewById(android.R.id.content);

但我不需要DecorView。

请参阅下面的xml。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/linearLayout">
        <WebView
        android:id="@+id/my_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    </LinearLayout>


</RelativeLayout>

我需要获取RelativeLayout(这是我所指的顶级布局,如果我的条款错了,请纠正我)。我可以使用下面的代码来获取它。

WebView webView = (WebView) findViewById(R.id.my_webview);
webview.getParent().getParent()

但是,如果布局嵌套得更深,如

,该怎么办?
<Layout>
    <Layout>
       <Layout>
          <Webview/>
       <Layout>
    <Layout>
<Layout>

如何在不使用getParent()的情况下获得顶级布局。谢谢!

1 个答案:

答案 0 :(得分:1)

在xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
 android:id="@+id/parentLayout">

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/linearLayout">
        <WebView
        android:id="@+id/my_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    </LinearLayout>


</RelativeLayout>

在您的活动中

 RelativeLayout parentLayout=(RelativeLayout)findViewById(R.id.parentLayout);

getWindow().getDecorView().getRootView();

getWindow().getDecorView().findViewById(android.R.id.content);

ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);