如何在android on demand中展开对话(例如,点击按钮)
我是android和kotlin的新手,正在开发我的第一个应用程序,这将是一个图书馆应用程序。在应用程序中,我希望有一个与一些基本视图(如创建数据库条目)的对话,该对话适合于一个屏幕,但我希望该对话可根据需要展开,如在应存储额外数据时单击按钮 我需要的与我的android智能手机内置的“添加新联系人”对话框非常相似。首先,对话框不可滚动,在一个屏幕上显示最重要的字段,但按下“添加更多字段”按钮,对话框可滚动(纵向两个屏幕的高度),并显示其他字段以保存联系人数据 我希望我能够描述我在寻找什么 我的第一个想法是使用一个片段(简单约束布局),当用户按下“添加更多字段”按钮并从第一个片段检索已经输入的信息时,它将被另一个片段(ScrollView)替换,但我想知道这是否是最佳实践 你能不能给我一些基本的建议,说明这段对话是如何编程的如何在android on demand中展开对话(例如,点击按钮),android,kotlin,dialog,user-experience,Android,Kotlin,Dialog,User Experience,我是android和kotlin的新手,正在开发我的第一个应用程序,这将是一个图书馆应用程序。在应用程序中,我希望有一个与一些基本视图(如创建数据库条目)的对话,该对话适合于一个屏幕,但我希望该对话可根据需要展开,如在应存储额外数据时单击按钮 我需要的与我的android智能手机内置的“添加新联系人”对话框非常相似。首先,对话框不可滚动,在一个屏幕上显示最重要的字段,但按下“添加更多字段”按钮,对话框可滚动(纵向两个屏幕的高度),并显示其他字段以保存联系人数据 我希望我能够描述我在寻找什么 我的
多谢各位 创建一个扩展Dialog类的类
class AddToPlaylist(
context: Context
) : Dialog(context) {
private var playlists: List<PlaylistEntity>? = null
fun setDialogPlaylists(_playlists: List<PlaylistEntity>) {
playlists = _playlists
}
var recyclerView: RecyclerView? = null
var adapter: PlaylistDialogAdapter? = null
var selectedPlaylistId = -1
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.add_to_playlist_dialog)
recyclerView = findViewById(R.id.recyclerViewPlaylists)
adapter = PlaylistDialogAdapter(context)
recyclerView?.adapter = adapter
recyclerView?.layoutManager = LinearLayoutManager(context)
adapter?.playlistClickCallback = fun(id: Int) {
selectedPlaylistId = id
dismiss()
}
adapter?.setPlayLists(playlists!!)
}
在对话框关闭后,还可以使用Disclose listener编写您想要的代码
addToPlaylistDialog.setOnDismissListener {
val playlistId: Int = addToPlaylistDialog.selectedPlaylistId
Log.i("PLAYLISTSONGS", "Dismiss Listener called with playlistId=$playlistId")
}
这应该足以满足您的需要。非常感谢您的回答,但不幸的是,这不是我想要的。请参阅下文了解更多信息information@LIronLeaves我有一个自定义对话框,我想在其中使用RecyclerView。你可以在那里有你想要的任何布局。例如,您可以简单地将xml代码从下面的文本复制到这个自定义的xml对话框中。在dialog类中,在按钮上设置一个click listener以实现您的目标。
addToPlaylistDialog = AddToPlaylist(activity as Context)
addToPlaylistDialog.show()
addToPlaylistDialog.setOnDismissListener {
val playlistId: Int = addToPlaylistDialog.selectedPlaylistId
Log.i("PLAYLISTSONGS", "Dismiss Listener called with playlistId=$playlistId")
}