我正在使用Android PreferenceScreen。仅向管理员显示一个屏幕。
因此,在片段onResume中,我有一个电话:
adminScreen.setVisible(user.isAdmin());//Preference
但是,当显示片段时,将首先显示首选项,然后出现一则简短的提示,其中该行垂直消失,并且其下的行向上移动。
我希望该行立即消失,但看不到如何实现。我看不到任何方法,并且 android:animateLayoutChanges 在我的preferences.xml中的任何地方都无效。
有人知道是否有办法禁用此动画吗?
答案 0 :(得分:2)
在用于显示首选项的RecycleView上禁用动画:
@Override
public RecyclerView onCreateRecyclerView (LayoutInflater inflater, ViewGroup parent, Bundle state) {
final RecyclerView view = super.onCreateRecyclerView(inflater, parent, state);
view.setItemAnimator(null);
view.setLayoutAnimation(null);
return view;
}
但是,要删除的首选项仍然会短暂闪烁,因此最好的解决方案是首先使用app:isPreferenceVisible="false"
将其隐藏在XML中,然后在需要时使用setVisible(true)
答案 1 :(得分:0)
假设您使用的是PreferenceFragmentCompat,则可以避免在onResume之前调用初始动画adminScreen.setVisible()。如果仅在setPreferencesFromResource()或setPreferenceScreen()之后执行此操作,则动画将不会完成。