当前位置: 首页 > 知识库问答 >
问题:

Android:MotionLayout无法将视图可见性设置为gone,视图保持可见

茅华灿
2023-03-14

我有一个布局,即MotionLayout,它必须为我定义了motionscene约束集开始和结束的FrameLayouts。并且它们是正确的动画。

然后,在这个动画框架布局下,我添加了两个文本视图,在单击时,我尝试隐藏一个,显示另一个,但两个都保持可见

 <!-- 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"
    />

重写有趣的onViewCreated(View:View,SavedInstanceState:Bundle?){super.onviewcreated(视图、保存实例)

    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跳过的视图吗?或者我需要添加另一个布局嵌套?

共有1个答案

甄阿苏
2023-03-14

您需要在motionLayout的文件layoutDescription中创建一个约束,并设置visibilityMode=“Ignore”。就像

        <Constraint
        android:id="your view in motion layout"
        app:visibilityMode="ignore"
         />
 类似资料:
  • 我有一个视图想要折叠,所以我将可见性设置为view,该视图变得不可见,但它仍然占用空间。 我不知道可能是什么,有人有想法? 下面是布局: 提前致谢

  • 我有一个ViewPager与3片段。它们中的每一个都包含相同的视图,并且当片段对用户可见时,视图会动画。我重写setUserVisibleHint启动动画。当我滑动到片段时,视图仍然存在一秒钟,消失,然后开始动画。当视图不可见时,我想完全删除它们,当滑动到片段时,它们变得可见,动画开始。基本上,当参数为false时,我试图将它们隐藏在setUserVisibleHint中。这没什么用。即使片段不可

  • 尝试使用自定义变量设置的可见性,但发生错误:。是否可以使用数据绑定设置视图可见性?多谢了。

  • 我有一个,希望在用户滚动时设置文本并更改的可见性。在用户停止滚动后,应该显示一秒钟,然后停止。为此,我有一个。我的代码如下所示: 代码运行得很好,我只是在想,如果我不应该在中做那么多事情,因为旧的手机可能会有这样的问题。的问题是,即使不需要也会调用它。

  • 大家好,我对进度条有问题。我试着做一个画廊视图,所有的图像都显示在网格视图中。但问题是,当所有的图像都被加载时,进度条并没有消失,请检查我使用旋转加载作为进度条的代码 已更新 这是xml 请解决这个问题。

  • 我有一个基本上是长形式的输入字段的活动。在每一行上,我想在每个EditText下方显示一个TextView作为提示文本,并且我希望TextView在用户输入数据时始终保持可见。不幸的是,软键盘遮住了提示文本,并且总是将自己定位在EditText的正下方。是否有任何技术可以允许EditText下方的TextView在软键盘出现并调整内容时也可见(通过windowSoftInputMode=调整调整大