让我从自定义视图组开始为其他所有人添加这个问题的答案。
当视图被添加到任何类型的视图组时,可以使用的方法如下:
public void addView(View child)
public void addView(View child, int index)
public void addView(View child, int width, int height)
public void addView(View child, LayoutParams params)
public void addView(View child, int index, LayoutParams params)
无论是通过 xml 还是代码添加 ViewGroup 及其子项,都将调用其中一种方法。
现在,如果您想将自定义视图组限制为特定条件。只需在这些方法中添加该条件。
这是取自 ScrollView 类的示例代码。
@Override
public void addView(View child) {
if (getChildCount() > 0) {
throw new IllegalStateException("ScrollView can host only one direct child");
}
super.addView(child);
}
@Override
public void addView(View child, int index) {
if (getChildCount() > 0) {
throw new IllegalStateException("ScrollView can host only one direct child");
}
super.addView(child, index);
}
@Override
public void addView(View child, ViewGroup.LayoutParams params) {
if (getChildCount() > 0) {
throw new IllegalStateException("ScrollView can host only one direct child");
}
super.addView(child, params);
}
@Override
public void addView(View child, int index, ViewGroup.LayoutParams params) {
if (getChildCount() > 0) {
throw new IllegalStateException("ScrollView can host only one direct child");
}
super.addView(child, index, params);
}
提示:在寻找特定实现时,您可以去寻找 android 组件如何实现事物并将其作为指南来实现。:)