如何使用MotionLayout调整TextView的大小

问题描述 投票:1回答:1

我正在尝试使用CollapsingToolbar创建MotionLayout动画。

我已经成功制作了所有动画,使其表现得像CollapsingToolbar一样具有高度的灵活性,这意味着我可以轻松地编写出色的动画而无需编写大量代码。

我的问题是无论我尝试了什么;我无法自然调整标题TextView的大小。

我当前正在使用ConstraintLayout版本2.0.0-beta3

Trial#1

[CustomAttribute of textSize]

<ConstraintSet android:id="@+id/dish_fragment_expanded_set">

    ...

    <Constraint
        android:id="@+id/dish_fragment_title_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="20dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/dish_fragment_cover_image">

        <CustomAttribute
            app:attributeName="textSize"
            app:customFloatValue="24" />

    </Constraint>

    ...

</ConstraintSet>
<ConstraintSet android:id="@+id/dish_fragment_collapsed_set">

    ...

    <Constraint
        android:id="@id/dish_fragment_title_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="12dp"
        app:layout_constraintBottom_toBottomOf="@+id/dish_fragment_navigation_icon"
        app:layout_constraintStart_toEndOf="@+id/dish_fragment_navigation_icon"
        app:layout_constraintTop_toTopOf="@id/dish_fragment_navigation_icon">

        <CustomAttribute
            app:attributeName="textSize"
            app:customFloatValue="16" />

    </Constraint>

    ...

</ConstraintSet>

[结果] >>

上面的解决方案有效,但是文本在移动时闪烁,这意味着动画不流畅。


Trial#2

[scaleXscaleY] >>

<ConstraintSet android:id="@+id/dish_fragment_expanded_set">

    ...

    <Constraint
        android:id="@+id/dish_fragment_title_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="20dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/dish_fragment_cover_image"
        android:scaleX="1"
        android:scaleY="1"/>

    ...

</ConstraintSet>
<ConstraintSet android:id="@+id/dish_fragment_collapsed_set">

    ...

    <Constraint
        android:id="@id/dish_fragment_title_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="12dp"
        app:layout_constraintBottom_toBottomOf="@+id/dish_fragment_navigation_icon"
        app:layout_constraintStart_toEndOf="@+id/dish_fragment_navigation_icon"
        app:layout_constraintTop_toTopOf="@id/dish_fragment_navigation_icon"       
        android:scaleX="0.70"
        android:scaleY="0.70"/>

    ...

</ConstraintSet>

[结果

] >>

上面的解决方案更改了大小,但没有更改布局参数,这意味着它破坏了约束,使我无法与导航图标正确对齐。


我更喜欢继续使用MotionLayout,因为使用CollapsingToolbar创建流畅而细腻的动画是一场噩梦。

我正在尝试使用MotionLayout创建CollapsingToolbar动画。我已经成功制作了所有动画,使其表现得像CollapsingToolbar一样具有高度的灵活性,这意味着我...

[我使用了试验2-'缩放'方法,并在实际的XML布局中设置了以下textview属性(在MotionScene XML上不设置)。>>

android:transformPivotX="0dp"
  android:transformPivotY= Equal to 1/2 of the size of the text view in expanded mode.

这将更改文本视图缩放所围绕的枢轴点。

android android-collapsingtoolbarlayout android-motionlayout
1个回答
0
投票

[我使用了试验2-'缩放'方法,并在实际的XML布局中设置了以下textview属性(在MotionScene XML上不设置)。>>

android:transformPivotX="0dp"
  android:transformPivotY= Equal to 1/2 of the size of the text view in expanded mode.
© www.soinside.com 2019 - 2024. All rights reserved.