# 档案 ## 目 录 1. [Gradle 依赖](#gradle-dependency) 2. [文件选择器](#file-choosers)1。[基础知识](#basics)2。[过滤器](#filter)3。[空文本](#empty-text)4。[文件夹创建](#folder-creation) 3. [文件夹选择器](#folder-choosers)1。[基础知识](#basics-1)2。[过滤器](#filter-1)3。[空文本](#empty-text-1)4。[文件夹创建](#folder-creation-1) ## Gradle 依赖 [ ![Files](https://img.shields.io/maven-central/v/com.afollestad.material-dialogs/files?label=files&style=for-the-badge) ](https://repo1.maven.org/maven2/com/afollestad/material-dialogs/files) `files` 模块包含对核心模块的扩展,例如文件和文件夹选择器。 ```gradle dependencies { ... implementation 'com.afollestad.material-dialogs:files:3.2.1' } ``` ## File Choosers ### Basics 注意:文件选择器要求你的应用程序具有 `READ_EXTERNAL_STORAGE` 的权限,否则目录列表将返回为空。 在 `MaterialDialog` 上使用 `fileChooser` 扩展名创建文件选择器: ```kotlin MaterialDialog(this).show { fileChooser { dialog, file -> // File selected } } ``` 它显示了所有的文件和文件夹,从外部存储目录开始。点击文件会调用回调并取消对话框。 你可以更改最初列出的目录: ```kotlin val initialFolder = File(getExternalStorageDirectory(), "Download") MaterialDialog(this).show { fileChooser(initialDirectory = initialFolder) { dialog, file -> // File selected } } ``` 如果存在一个积极的行动按钮,点击一个文件将选择它,但回调是不是调用,直到积极的行动按钮被按下。 ### Filter 可以应用一个过滤器来只显示你希望显示的文件和目录: ```kotlin // show ALL folders, and files that start with the letter 'a' val myFilter: FileFilter = { it.isDirectory || it.nameWithoutExtension.startsWith("a", true) } MaterialDialog(this).show { fileChooser(filter = myFilter) { dialog, file -> // File selected } } ``` ### Empty Text 当文件夹中没有内容时,将显示空文本。你可以配置空文本标签: ```kotlin MaterialDialog(this).show { fileChooser(emptyTextRes = R.string.custom_label) { dialog, file -> // File selected } } ``` ### Folder Creation 你可以允许用户创建文件夹。 ```kotlin MaterialDialog(this).show { fileChooser( allowFolderCreation = true, folderCreationLabel = R.string.new_folder // optional as well ) { dialog, file -> // File selected } } ``` 此“新建文件夹”选项仅在可写的目录中显示。 ## Folder Choosers 注意:文件夹选择器要求你的应用程序具有 `READ_EXTERNAL_STORAGE` 的权限,否则目录列表将返回为空。 文件夹选择器与文件选择器基本相同,但有几个小区别:1)即使应用了自定义过滤器,也只显示文件夹。2)选择回调不会在项目单击时调用,只有在按下“积极行动”按钮时,才会在当前查看的文件夹中调用它。 ### Basics ```kotlin MaterialDialog(this).show { folderChooser { dialog, folder -> // Folder selected } } ``` ### Filter 你可以像使用文件选择器一样应用过滤器。 ```kotlin // show only folders that start with the letter 'a' val myFilter: FileFilter = { it.name.startsWith("a", true) } MaterialDialog(this).show { folderChooser(filter = myFilter) { dialog, file -> // Folder selected } } ``` ### Empty Text 当文件夹中没有内容时,将显示空文本。你可以配置空文本标签: ```kotlin MaterialDialog(this).show { folderChooser(emptyTextRes = R.string.custom_label) { dialog, file -> // File selected } } ``` ### Folder Creation 你可以允许用户创建文件夹。 ```kotlin MaterialDialog(this).show { folderChooser( allowFolderCreation = true, folderCreationLabel = R.string.new_folder // optional as well ) { dialog, file -> // File selected } } ``` 此“新建文件夹”选项仅在可写的目录中显示。