如果我创建两个类,则扩展FrameLayout
的Parent类和扩展View
的Child类,然后使用XML
对其进行初始化。是否可以从Parent类构造函数中获取子元素?如果我使用getChildAt()
,由于该活动仍然没有创建,我总是得到null。
<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>
父级和子级
public class Parent extends FrameLayout {
public Parent(@NonNull Context context) {
super(context);
this.getChildAt(0); // return null
}
...
}
public class Child extends View {
...
}
答案 0 :(得分:1)
由于您在getChildAt
的构造过程中正在调用FrameLayout
,因此您会得到空值(您的孩子仍然没有完全附加到视图上)。一种解决方案是覆盖onLayout()
或onMeasure()
来生孩子。
答案 1 :(得分:1)
膨胀之前,您无法获得父级的子视图。
但是您可以动态地进行操作,但也可以像一样进行操作,您必须手动将视图添加到父视图。
然后您可以从“父视图”中获得子视图。