Searchable-Dropdown-Menu-Jetpack-Compose 使用教程

Searchable-Dropdown-Menu-Jetpack-Compose 使用教程

Searchable-Dropdown-Menu-Jetpack-Compose🎨A Jetpack Compose searchable drop down menu library 项目地址:https://gitcode.com/gh_mirrors/se/Searchable-Dropdown-Menu-Jetpack-Compose

项目介绍

Searchable-Dropdown-Menu-Jetpack-Compose 是一个用于在 Jetpack Compose 中创建可搜索下拉菜单的 Android 库。该库由 Breens Mbaka 开发,旨在为 Jetpack Compose 提供一个开箱即用的可搜索下拉菜单解决方案。

项目快速启动

步骤 1:添加仓库

在你的根 build.gradle 文件中添加 JitPack 仓库:

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

步骤 2:添加依赖

在你的模块级 build.gradle 文件中添加依赖:

dependencies {
    implementation 'com.github.Breens-Mbaka:Searchable-Dropdown-Menu-Jetpack-Compose:0.2.8'
}

示例代码

以下是一个简单的示例,展示如何在 Jetpack Compose 中使用该库:

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.tooling.preview.Preview

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            SearchableDropdownMenuExample()
        }
    }
}

@Composable
fun SearchableDropdownMenuExample() {
    var expanded by remember { mutableStateOf(false) }
    var textInput by remember { mutableStateOf("") }
    var selectedItem by remember { mutableStateOf<String?>(null) }

    val items = listOf("Basketball", "Rugby", "Football", "MMA", "Motorsport", "Snooker", "Tennis")

    Column {
        TextField(
            value = textInput,
            onValueChange = { textInput = it },
            label = { Text("Search") },
            trailingIcon = {
                IconButton(onClick = { expanded = true }) {
                    Icon(Icons.Default.ArrowDropDown, contentDescription = null)
                }
            }
        )

        DropdownMenu(
            expanded = expanded,
            onDismissRequest = { expanded = false }
        ) {
            items.forEach { label ->
                DropdownMenuItem(
                    onClick = {
                        selectedItem = label
                        textInput = label
                        expanded = false
                    }
                ) {
                    Text(text = label)
                }
            }
        }

        selectedItem?.let {
            Text("Selected: $it")
        }
    }
}

@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    SearchableDropdownMenuExample()
}

应用案例和最佳实践

案例 1:选择部门

假设你有一个部门列表,用户可以通过搜索来选择一个部门:

@Composable
fun DepartmentSelector() {
    var expanded by remember { mutableStateOf(false) }
    var textInput by remember { mutableStateOf("") }
    var selectedDepartment by remember { mutableStateOf<String?>(null) }

    val departments = listOf("Sales", "Marketing", "Engineering", "HR", "Finance")

    Column {
        TextField(
            value = textInput,
            onValueChange = { textInput = it },
            label = { Text("Search Department") },
            trailingIcon = {
                IconButton(onClick = { expanded = true }) {
                    Icon(Icons.Default.ArrowDropDown, contentDescription = null)
                }
            }
        )

        DropdownMenu(
            expanded = expanded,
            onDismissRequest = { expanded = false }
        ) {
            departments.filter { it.contains(textInput, ignoreCase = true) }.forEach { label ->
                DropdownMenuItem(
                    onClick = {
                        selectedDepartment = label
                        textInput = label
                        expanded = false
                    }
                ) {
                    Text(text = label)
                }
            }
        }

        selectedDepartment?.let {
            Text("Selected Department: $it")

Searchable-Dropdown-Menu-Jetpack-Compose🎨A Jetpack Compose searchable drop down menu library 项目地址:https://gitcode.com/gh_mirrors/se/Searchable-Dropdown-Menu-Jetpack-Compose

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石顺垒Dora

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值