jetpack compose ScrollableTabRow ScrollableTabRowMinimumTabWidth最小值 最小宽度限制90.dp

751 阅读1分钟

image.png

image.png

因为这两个行代码 导致ScrollableTabRow最小宽度就只能是90.dp 然后UI给设个375两边再空8.dp 刚好一行显示4个tab

解决办法 反射

object UIUtils {
    fun scrollableTabRowMinimumTabWidthChange() {
        val clazz = Class.forName("androidx.compose.material.TabRowKt")
        val field = clazz.getDeclaredField("ScrollableTabRowMinimumTabWidth")
        field.isAccessible = true
        field.set(null, 0.0f) // set tab min width to 0
    }
}

然后这个TabRow的页面初始化执行一次,你也可以在MainActivity里执行一次 由于这个东西是全局的所以这个一设置以后全部都会改,所以建议修改上面方法 然后把width传进去在使用的UI初始化的时候调用

LaunchedEffect(key1 = Unit, block = {
    scrollableTabRowMinimumTabWidthChange()
})