Android 从 FrameLayout 获取子项

Android get child from FrameLayout

如果我创建两个 class,一个扩展 FrameLayout 的父 class 和一个扩展 View 的子 class,然后使用XML 来初始化它们。是否可以从 Parent class 构造函数中获取子元素?如果我使用 getChildAt() ,我总是得到 null,因为 activity 仍然没有创建。

 <com.example.Parent 
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_centerInParent="true">

        <com.example.Child
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <com.example.Child
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </com.example.Parent>

父子 classes

public class Parent extends FrameLayout { 
    public Parent(@NonNull Context context) {
         super(context);
         this.getChildAt(0); // return null
    }
...  
}

public class Child extends View {  
...  
}

由于您在构建 FrameLayout 时调用 getChildAt,您将获得空值(您的 children 仍未完全附加到视图)。一种解决方案是覆盖 onLayout()onMeasure() 以获得您的孩子。

在充气之前,您无法从父视图中获取子视图。

但是你可以动态地做,但也可以像 一样工作,你必须手动添加视图到父视图。

然后你可以从父视图中获取子视图。