Osc*_*dez 8 android android-custom-attributes android-motionlayout
任何人都可以帮助我以正确的方式更改 中TextView的文本MotionLayout......这就是我所做的。
我测试了MotionLayout一个简单的应用程序......我在到达部分运动教程约CustomAttributes
使用它们,您可以更改BackgroundColora 的View,也可以textColor使用customColorValue
在这种情况下,您可以看到它在开始和结束场景中更改这些值非常有效:
<CustomAttribute
motion:attributeName="backgroundColor"
motion:customColorValue="#004A6D" />
<CustomAttribute
motion:attributeName="textColor"
motion:customColorValue="#000000" />
Run Code Online (Sandbox Code Playgroud)
另外我注意到有一个customStringValue所以我想我可以将TextView文本更改为“BEFORE”->“AFTER”。但是当我尝试CustomAttribute在应用程序崩溃时设置它时。
在开始场景中:
<CustomAttribute
motion:attributeName="Text"
motion:customStringValue="BEFORE" />
Run Code Online (Sandbox Code Playgroud)
在最后的场景中:
<CustomAttribute
motion:attributeName="Text"
motion:customStringValue="AFTER" />
Run Code Online (Sandbox Code Playgroud)
在 MotionScene 之外,textView文本是TEST:
CustomAttribute为结束场景设置only 时...文本从初始值TEST更改为结束AFTER值......所以它部分工作但永远不会返回到初始状态。TextView。它部分工作。所以......任何人都可以帮我用正确的方式来改变TextView在的文本MotionLayout。
小智 5
这样做的简单方法是
<ConstraintSet android:id="@+id/start">
<Constraint
android:id="@id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<CustomAttribute
app:attributeName="textColor"
app:customColorValue="#1D1D1D" />
</Constraint>
</ConstraintSet>
Run Code Online (Sandbox Code Playgroud)
<Constraint
android:id="@id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CustomAttribute
app:attributeName="textColor"
app:customColorValue="#FFFFFF" />
</Constraint>
</ConstraintSet>
Run Code Online (Sandbox Code Playgroud)
将动作更改为应用程序
小智 4
您可以使用 TransitionListener 以编程方式完成此操作,如下所示:
motionLayout.setTransitionListener(object : MotionLayout.TransitionListener {
override fun onTransitionTrigger(p0: MotionLayout?, p1: Int, p2: Boolean, p3: Float) {
// ADD YOUR CODE HERE
}
override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
// ADD YOUR CODE HERE
}
override fun onTransitionChange(p0: MotionLayout?, p1: Int, p2: Int, p3: Float) {
textView.text = if(p3==0f) "before" else "after"
}
override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) {
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6738 次 |
| 最近记录: |