BasicTextField/TextField如何移除leadingIcon左侧及trailingIcon右侧内边距?
解决BasicTextField移除leadingIcon左侧和trailingIcon右侧内边距的问题
你可以通过两种方式实现需求:
方式一:自定义DecorationBox完全控制布局
直接手动布局图标和输入区域,彻底移除默认内边距:
BasicTextField( value = text, onValueChange = { text = it }, decorationBox = { innerTextField -> Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { // leadingIcon,无左侧额外内边距 Icon(Icons.Filled.Search, contentDescription = "搜索") // 输入区域,可自定义与图标间的间距 Box(modifier = Modifier.weight(1f).padding(horizontal = 8.dp)) { innerTextField() } // trailingIcon,无右侧额外内边距 Icon(Icons.Filled.Clear, contentDescription = "清除") } }, contentPadding = PaddingValues(0.dp) )
方式二:修改官方DecorationBox的contentPadding
利用TextFieldDefaults.basicTextFieldDecorationBox,调整内边距参数:
BasicTextField( value = text, onValueChange = { text = it }, decorationBox = { innerTextField -> TextFieldDefaults.basicTextFieldDecorationBox( value = text, innerTextField = innerTextField, leadingIcon = { Icon(Icons.Filled.Search, contentDescription = "搜索") }, trailingIcon = { Icon(Icons.Filled.Clear, contentDescription = "清除") }, // 移除左右侧默认内边距 contentPadding = TextFieldDefaults.textFieldWithoutLabelPadding( start = 0.dp, end = 0.dp ), singleLine = true ) } )
两种方式都能移除leadingIcon左侧和trailingIcon右侧的多余内边距,你可以根据是否需要保留官方默认样式来选择。
内容的提问来源于stack exchange,提问作者jeremyb
相关产品推荐
相关产品推荐

