android - Android:MotionLayout 无法将视图可见性设置为消失,视图保持可见
问题描述
我的布局是 MotionLayout,它必须是 FrameLayouts,我为其定义了motionscene ConstraintSets 的开始和结束。他们的动画是正确的。
然后在这个动画 FrameLayouts 下,我添加了 2 个 TextViews,点击时我尝试隐藏一个并显示另一个,但两者都保持可见
<!-- No Account Line -->
<TextView
android:id="@+id/noAccountTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_account_question"
android:fontFamily="@font/avenirnext_demibold"
android:textSize="15sp"
android:textColor="@color/black"
tools:ignore="MissingConstraints" />
<TextView
android:id="@+id/signupTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/signup_answer"
android:fontFamily="@font/avenirnext_demibold"
android:textSize="15sp"
android:textColor="@color/colorAccent"
android:selectAllOnFocus="false"
android:linksClickable="false"
android:autoLink="all"
android:clickable="true"
tools:ignore="MissingConstraints" />
<TextView
android:id="@+id/nowTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/now_answer"
android:fontFamily="@font/avenirnext_demibold"
android:textSize="15sp"
android:textColor="@color/black"
tools:ignore="MissingConstraints" />
<androidx.constraintlayout.helper.widget.Flow
android:id="@+id/noAccountLine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:flow_horizontalGap="8dp"
app:constraint_referenced_ids="noAccountTextView, signupTextView, nowTextView"
app:layout_constraintVertical_bias="1.0"
android:layout_marginBottom="16dp"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
<!-- No Account Line -->
<!-- Have Account Line -->
<TextView
android:id="@+id/haveAccountTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/have_account_question"
android:fontFamily="@font/avenirnext_demibold"
android:textSize="15sp"
android:textColor="@color/black"
tools:ignore="MissingConstraints" />
<TextView
android:id="@+id/loginTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/log_in_answer"
android:fontFamily="@font/avenirnext_demibold"
android:textSize="15sp"
android:textColor="@color/colorAccent"
android:selectAllOnFocus="false"
android:linksClickable="false"
android:autoLink="all"
android:clickable="true"
tools:ignore="MissingConstraints" />
<TextView
android:id="@+id/insteadTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/instead_answer"
android:fontFamily="@font/avenirnext_demibold"
android:textSize="15sp"
android:textColor="@color/black"
tools:ignore="MissingConstraints" />
<androidx.constraintlayout.helper.widget.Flow
android:id="@+id/haveAccountLine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:flow_horizontalGap="8dp"
app:constraint_referenced_ids="haveAccountTextView, loginTextView, insteadTextView"
app:layout_constraintVertical_bias="1.0"
android:layout_marginBottom="16dp"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
我可以在 MotionLayout 中执行此操作,还是需要将 FrameLayout 包装在单独的 MotionLayout 中,然后使用此 TextView 将其放置在 ConstraintLayout 中。似乎我没有为此 TextViews (约束)定义行为的开始/结束状态正在破坏某些东西。
我试过用这样的东西
覆盖乐趣 onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState)
signupTextView.setOnClickListener {
//authenticationFragment.transitionToEnd()
//isFrontCard = false
/*
val transition: Transition = Fade()
transition.setDuration(350)
transition.addTarget(R.id.noAccountLine)
transition.addTarget(R.id.haveAccountLine)
TransitionManager.beginDelayedTransition(authenticationFragment, transition)
*/
noAccountLine.isGone = true
haveAccountLine.isVisible = true
}
同样在注释掉代码后它也不起作用。我可以让 MotionLayout 跳过一些视图吗?或者我需要添加另一个布局嵌套?
解决方案
您需要在motionLayout的文件layoutDescription中创建一个约束并设置visibilityMode =“ignore”。喜欢
<Constraint
android:id="your view in motion layout"
app:visibilityMode="ignore"
/>
推荐阅读
- json - Rest Template 过滤器响应 Country StartWith A 和 EndWith A
- python - 在 aws cdk 中具有嵌套数据结构的属性应该使用哪种类型?
- android - 如何在 buildmenu 项目中自定义字体大小和样式?
- c# - 如何为来自中间件的每个 api 调用添加配置数据到我的 webapi 应用程序
- mysql - 如何在 sql 中设置变量并在选择查询中使用它来显示和执行对该变量的操作(MAX MIN)?
- css - 字体真棒 npm 不工作(字体给出 404)
- babeljs - babel访问者的循环访问
- csv - Python - 循环通过 CSV,然后通过 PDF。有没有一种有效的方法来做到这一点?
- php - TinyMCE 中的 PHP foreach
- angular - 在 Angular 11 prime ng 滑块中禁用双击