最近,我发现模拟器的显示单选按钮和复选框有奇怪的行为。它不是只有 2 种 UI 状态,更具体地说,它显示 4 种不同甚至更多。我想它们是冻结的动画状态。在布局检查器和新版本的 API 上,它看起来很正常。请看下面的图片:
我在 Api 版本:23 和 24 中发现了它。在 28 和 30 上它的行为正确。
那么问题来了:这真的是模拟器的问题而在真机上不会发生吗?或者可能是某些设置的问题?
编辑:这不仅发生在模拟器上。
我找到了复合按钮状态不正确的原因。这是因为我使用了 Inset 在按钮之前添加左填充,如下所示:
fun CompoundButton.addButtonDrawableInsets(insetDp: Int) {
val originalDrawable = buttonDrawable ?: return
buttonDrawable = InsetDrawable(originalDrawable, dp(insetDp))
}
我试图找到一种以不同方式添加填充的方法,但最终我用额外的 FrameLayout 包裹每个按钮并在那里添加填充。请注意 RadioGroup,因为如果它没有作为 RadioButton 的直接子级,那么它的功能就会中断,您必须自己实现重新选择以前的按钮。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)