M. *_*han 4 android android-constraintlayout
我正在尝试克隆 ConstraintSet,如下所示:
ConstraintLayout cl = findViewById(R.id.mainActivityParentCl);
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(cl);
Run Code Online (Sandbox Code Playgroud)
它在克隆(cl)上崩溃,
Caused by: java.lang.RuntimeException: All children of ConstraintLayout must have ids to use ConstraintSet
Run Code Online (Sandbox Code Playgroud)
使用时不会崩溃
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
Run Code Online (Sandbox Code Playgroud)
它在 1.1.3 上崩溃:
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
Run Code Online (Sandbox Code Playgroud)
解决方案?
您面临的问题是因为com.android.support.constraint:constraint-layout:1.1.0有必要为每个视图提供 id,因为当通过 Java/Kotlin 代码执行 XML 部分时,尤其是克隆布局时,ConstraintSet可以进一步使用它来创建动态视图,可以轻松创建;如果没有给出其 id,则会给出或抛出一个异常(在克隆约束集时)作为您的,因为当重绘时ConstraintLayout(例如,当应用程序进入后台然后恢复时)会触发此异常(由于缺乏未给出 id 的视图的可访问性)。并且根据 Android 开发人员指南,您必须为每个视图提供唯一的 ID,才能正确访问该视图。
我希望这可以帮助你。
| 归档时间: |
|
| 查看次数: |
3101 次 |
| 最近记录: |