我正在通过扩展抽象类 ViewGroup 制作自定义布局 Android 组件(根据 Romain Guy 在 Parleys.com 上的视频教程:http://www.parleys.com/#st=5&id=2191&sl=1)。
我的组件应该包含子组件,但我想将其限制为只有 1 个 ViewGroup 类型的子组件(例如另一个 LinearLayout 或 RelativeLayout)。有点像 ScrollView。有没有办法添加该限制?
编辑: 正如 android 开发人员所说,最终解决方案是以编程方式检查 ViewGroup 子类的 FinishInflate 约束:
@Override
public void onFinishInflate()
{
if (getChildCount() > 1)
throw new IllegalArgumentException("Only 1 child allowed");
if (getChildCount() == 0 || !(getChildAt(0) instanceof ViewGroup))
throw new IllegalArgumentException("Child must be a ViewGroup");
}
最佳答案
当然可以。
通过使用 getChildCount()
简单地获取 child 数量为了检查是否只有一个 child 。
然后,使用 getChildAt(0)
获取 viewGroup 中唯一的 child .
在此之后,对结果使用反射并对它的类做任何你想做的额外检查(例如,使用 getSuperclass()
关于android - 强制自定义 ViewGroup 子项类型和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11917445/