【问题标题】:Toolbar blinks when transitioning from fragment to fragment从片段过渡到片段时工具栏闪烁
【发布时间】:2020-10-25 23:41:09
【问题描述】:

我的父 Activity 中有一个工具栏。有两个子片段。当我按下 FAB 按钮在片段之间转换时,工具栏会闪烁。我能做些什么来修复它?谢谢!

screenshot

主要活动

XML:

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:elevation="4dp"
    android:theme="@style/ToolbarTheme"
    app:popupTheme="@style/ToolbarTheme"/>
  

科特林:

navController = findNavController(R.id.myNavHostFragment)
    setSupportActionBar(findViewById(R.id.toolbar))
    setupActionBarWithNavController(navController)

片段 A

XML:

<com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/floatingActionButton"
        android:transitionName="shared_element_container"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="24dp"
        android:clickable="true"
        android:focusable="true"
        app:elevation="8dp"
        />

科特林:

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
     postponeEnterTransition()
    binding = FragmentListBinding.inflate(inflater, container, false)
    binding.root.doOnPreDraw {
        startPostponedEnterTransition()
    }
    return binding.root

片段 B

XML:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:transitionName="shared_element_container">

科特林:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    sharedElementEnterTransition = MaterialContainerTransform()
    sharedElementReturnTransition = MaterialContainerTransform()
}

已解决:对我有用的是我从主要活动中删除了我的工具栏并将应用程序主题从“(主题名称)”.NoActionBar 更改为“(主题名称)”。DarkActionBar .所以我将工具栏放在主题中,它解决了问题

【问题讨论】:

    标签: android kotlin android-fragments toolbar shared-element-transition


    【解决方案1】:

    当您使用 SharedElement 过渡制作动画时,您需要排除不制作动画的视图。

    类似这样的:

    val animation = MaterialContainerTransform() // Initialize the default animation
    animation.excludeTarget(R.id.toolbar, true) // Exclude your toolbar from said animation
    

    【讨论】:

    • 不幸的是,这对我没有任何影响
    【解决方案2】:

    对我有用的是我从主要活动中删除了我的工具栏,并将应用程序主题从“(主题名称)”.NoActionBar 更改为“(主题名称)”.DarkActionBar。所以我将工具栏放在主题中,它解决了问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多