【问题标题】:How to set up OnClickListener on view shown by TransitionManager如何在 TransitionManager 显示的视图上设置 OnClickListener
【发布时间】:2020-12-20 16:36:32
【问题描述】:

我有一个布局在scene_a.xml 中的活动,应该使用TransitionManagerScene 替换为scene_b.xml 中的布局。那里的场景包含按钮。在第二个场景中处理事件的惯用方式是什么?

activity.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:id="@+id/scene_root">

        <include layout="@layout/scene_a" android:id="@+id/scene" />
    </FrameLayout>
</FrameLayout>

scene_a.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <Button android:id="@+id/button_a" android:text="A" />
</FrameLayout>

scene_b.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <Button android:id="@+id/button_b" android:text="B" />
</FrameLayout>

onCreate() 在活动代码中

// Inflate activity.xml using ViewBinding “binding”.

with (binding) {
    scene.buttonA.setOnClickListener {
        val newScene = Scene.getSceneForLayout(binding.sceneRoot, R.layout.scene_b, context)
        val transition = Fade()
        TransitionManager.go(newScene, transition)
    }
}

【问题讨论】:

    标签: android android-layout kotlin android-transitions


    【解决方案1】:

    您可以先膨胀第二个场景的view,初始化此view 上的所有侦听器,然后通过Scene(ViewGroup) 构造函数创建Scene 对象。

        val bView = LayoutInflater.from(this).inflate(R.layout.scene_b, null)
        //set all listeners etc.
        bView.findViewById(R.id.button).setOnClickListener....
    
        val newScene = Scene(bView)
        val transition = Fade()
        TransitionManager.go(newScene, transition)
    

    【讨论】:

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