Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android on demand中展开对话(例如,点击按钮)_Android_Kotlin_Dialog_User Experience - Fatal编程技术网

如何在android on demand中展开对话(例如,点击按钮)

如何在android on demand中展开对话(例如,点击按钮),android,kotlin,dialog,user-experience,Android,Kotlin,Dialog,User Experience,我是android和kotlin的新手,正在开发我的第一个应用程序,这将是一个图书馆应用程序。在应用程序中,我希望有一个与一些基本视图(如创建数据库条目)的对话,该对话适合于一个屏幕,但我希望该对话可根据需要展开,如在应存储额外数据时单击按钮 我需要的与我的android智能手机内置的“添加新联系人”对话框非常相似。首先,对话框不可滚动,在一个屏幕上显示最重要的字段,但按下“添加更多字段”按钮,对话框可滚动(纵向两个屏幕的高度),并显示其他字段以保存联系人数据 我希望我能够描述我在寻找什么 我的

我是android和kotlin的新手,正在开发我的第一个应用程序,这将是一个图书馆应用程序。在应用程序中,我希望有一个与一些基本视图(如创建数据库条目)的对话,该对话适合于一个屏幕,但我希望该对话可根据需要展开,如在应存储额外数据时单击按钮

我需要的与我的android智能手机内置的“添加新联系人”对话框非常相似。首先,对话框不可滚动,在一个屏幕上显示最重要的字段,但按下“添加更多字段”按钮,对话框可滚动(纵向两个屏幕的高度),并显示其他字段以保存联系人数据

我希望我能够描述我在寻找什么

我的第一个想法是使用一个片段(简单约束布局),当用户按下“添加更多字段”按钮并从第一个片段检索已经输入的信息时,它将被另一个片段(ScrollView)替换,但我想知道这是否是最佳实践

你能不能给我一些基本的建议,说明这段对话是如何编程的


多谢各位

创建一个扩展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")
    }