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()
以获得您的孩子。
在充气之前,您无法从父视图中获取子视图。
但是你可以动态地做,但也可以像 一样工作,你必须手动添加视图到父视图。
然后你可以从父视图中获取子视图。
如果我创建两个 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()
以获得您的孩子。
在充气之前,您无法从父视图中获取子视图。
但是你可以动态地做,但也可以像 一样工作,你必须手动添加视图到父视图。
然后你可以从父视图中获取子视图。