android - 强制自定义 ViewGroup 子项类型和计数

标签 android android-layout viewgroup

我正在通过扩展抽象类 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/

相关文章:

android - 是否可以在 GLSurfaceView 中绘制 View 或 ViewGroup

android - 删除 View 不工作

java - 如何比较java/android中的时间(以字符串形式输入)?

android - 我如何从android中的复选框获取值

android - 是否有适用于 Android 的 Twitter API SDK?

java - 在布局中插入多个项目

android - NullPointerException:尝试从字段 'int android.view.View.mViewFlags' 读取

android - 使用音池后无法更改铃声音量 (<2.1)

android - 圆形 ImageView 无法正确显示

java - Android Studio : Code is done, 但每次我尝试运行时应用程序都会崩溃