如何解决使用DataBinding时MotionLayout动画不起作用
所以我正在为我的应用程序使用dataBinding和MVVM,这意味着我使用DataBindingUtil类而不是SetContentView之类,
val binding = DataBindingUtil.setContentView(this,R.layout.activity_record)
在我的布局文件中,我使用了运动布局(用作根布局)来为CalendarView小部件设置动画,以过渡到屏幕底部。
<CalendarView
android:id="@+id/datePickerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="#191919"
android:gravity="center"
android:orientation="vertical"
android:theme="@style/CalendarViewTheme"
android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent" />
在End约束中,我有以下代码:
<Constraint
android:id="@+id/datePickerView">
<Layout
android:layout_width="match_parent"
android:layout_height="wrap_content"
motion:layout_constraintBottom_toBottomOf="parent"
motion:layout_constraintEnd_toEndOf="parent"
motion:layout_constraintStart_toStartOf="parent"/>
</Constraint>
当我致电ml.transitionToEnd()
时,在活动中,calendarView应该从屏幕下方(在屏幕上不可见)到屏幕底部(整个视图在屏幕底部可见)进行动画处理。当我使用setContentView()
时会发生此动画,但是当我使用dataBinding即时就不会发生这种动画。 val binding = DataBindingUtil.setContentView()
使用一种简单得多的方法,当我使用DataBinding时如何使MotionLayout在活动中起作用?
解决方法
我对Kotlin不太熟悉,但是在Java中,我是这样处理的:
public class DashboardFragment extends Fragment {
@Override
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater,R.layout.fragment_dashboard,container,false);
return mBinding.getRoot();
}
这与MotionLayout一起很好地工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。