You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jetpack Compose中获取android.R.attr.*属性的值?

在Jetpack Compose中获取dialogPreferredPadding属性值

之前在XML布局里,我用android:padding="?dialogPreferredPadding"设置对话框内容的首选内边距,该属性定义如下:

<!-- Preferred padding for dialog content. -->
<attr name="dialogPreferredPadding" format="dimension" />

代码里能通过android.R.attr.dialogPreferredPadding找到这个属性,但不清楚怎么在Jetpack Compose中获取它的值,应用到如下代码的padding中:

Row(
    modifier = Modifier
        .padding( <use dialogPreferredPadding here> )
)

解决方法

有两种简洁的实现方式:

方法1:使用dimensionResource(推荐)

Compose的dimensionResource支持直接解析主题属性,传入系统属性ID即可:

Row(
    modifier = Modifier
        .padding(dimensionResource(id = android.R.attr.dialogPreferredPadding))
) {
    // 你的Row内容
}

方法2:通过主题属性手动获取

如果需要更灵活的处理逻辑,可以通过Context从当前主题中提取属性值:

val context = LocalContext.current
// 从主题中获取属性维度值,转换为Compose的Dp类型
val dialogPadding = with(context.theme) {
    obtainStyledAttributes(intArrayOf(android.R.attr.dialogPreferredPadding)).use { typedArray ->
        typedArray.getDimension(0, 0f).dp
    }
}

Row(
    modifier = Modifier
        .padding(dialogPadding)
) {
    // 你的Row内容
}

这里用use函数自动释放TypedArray避免内存泄漏,getDimension返回像素维度后,通过.dp扩展转换为Compose适配的Dp单位。

内容的提问来源于stack exchange,提问作者t0m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:47:17