Anton Charov Asked:2020-06-17 16:48:38 +0800 CST2020-06-17 16:48:38 +0800 CST 2020-06-17 16:48:38 +0800 CST Android:如何替换 CardView? 772 卡片显示在 RecyclerView 中。该卡有一个详细信息按钮。单击时,您需要将卡片替换为描述。在描述中有一个返回按钮可以返回到列表。我正在考虑将片段从 RecyclerView 替换为 CardView。如何实现后退按钮,以便列表在同一张卡上打开?还是以其他方式更好? android 2 个回答 Voted Best Answer Andrew 2020-06-17T17:10:54+08:002020-06-17T17:10:54+08:00 无需用片段替换列表即可完成。例如使用全屏样式DialogFragment或简单样式。Dialog为了调用对话框并显示适配器中的数据,您可以显示对话框: val dialogue = Dialog(ctx) dialogue.setContentView(R.layout.yourLayout) Objects.requireNonNull<Window>(dialogue.window).setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) dialogue.show() yourLayout将显示详细信息的标记在哪里。此外,还可以创建一个侦听器来单击十字按钮,并在按下时调用: dialogue.dismiss() 您将在调用此对话框的同一位置。这将比锯穿更容易DialogFragment。如果还需要通过fragment来做,那么就需要在adapter和这个list所在的fragment之间做一个接口: interface openCard{ fun cardopen(pos:Int) } 然后我们实现这个接口并重写这个方法: class YourActivity: AppCompatActivity(),openCard{ ... override fun cardopen(pos:Int) { } ... } 并且在适配器构造函数中,您将需要传递有关此接口连接到活动(片段)的信息: YourAdapter(..., this) 然后在构造函数的片段中已经有一个带有方法的接口: openCard.cardopen(position) 这个方法需要在你点击卡片的地方调用。然后你在列表所在的fragment中进行fragment的替换,将关于卡片的数据和你离开的位置传递给详细视图fragment,然后当你需要返回到带有列表的fragment时,然后再次将位置传递给捆绑包并将列表滚动到它。但就我个人而言,在我看来,通过对话会更容易:) Maks 2020-06-17T17:04:11+08:002020-06-17T17:04:11+08:00 您可以使用可见性进行替换。我们有recycler_view_item,它包含cardview。只需将另一个布局放在它旁边已经有描述的地方,并将其设置为 visibility.gone 。然后在onclicklistener中显示卡片或描述,只需将可见性值从gone改为visible,反之亦然。
无需用片段替换列表即可完成。例如使用全屏样式
DialogFragment
或简单样式。Dialog
为了调用对话框并显示适配器中的数据,您可以显示对话框:yourLayout
将显示详细信息的标记在哪里。此外,还可以创建一个侦听器来单击十字按钮,并在按下时调用:您将在调用此对话框的同一位置。这将比锯穿更容易
DialogFragment
。如果还需要通过fragment来做,那么就需要在adapter和这个list所在的fragment之间做一个接口:然后我们实现这个接口并重写这个方法:
并且在适配器构造函数中,您将需要传递有关此接口连接到活动(片段)的信息:
然后在构造函数的片段中已经有一个带有方法的接口:
这个方法需要在你点击卡片的地方调用。然后你在列表所在的fragment中进行fragment的替换,将关于卡片的数据和你离开的位置传递给详细视图fragment,然后当你需要返回到带有列表的fragment时,然后再次将位置传递给捆绑包并将列表滚动到它。但就我个人而言,在我看来,通过对话会更容易:)
您可以使用可见性进行替换。我们有recycler_view_item,它包含cardview。只需将另一个布局放在它旁边已经有描述的地方,并将其设置为 visibility.gone 。然后在onclicklistener中显示卡片或描述,只需将可见性值从gone改为visible,反之亦然。