Anko DSL中SeekBar自定义样式显示异常问题求助
Anko DSL SeekBar显示异常问题解决方案
我之前也碰到过一模一样的问题!用Anko DSL直接创建SeekBar时,进度条的显示效果总是乱糟糟的,直到对比了XML布局的写法才找到根源。
问题原因分析
你看XML版的seek_lay.xml里,给SeekBar设置了android:maxHeight="2dp"和android:minHeight="2dp"这两个关键属性,但Anko DSL的代码里完全漏掉了它们。默认情况下,SeekBar的高度会自适应thumb的尺寸,导致进度条被拉伸得很高,自然就显得很怪异。
修复后的Anko DSL代码
只需要在DSL代码里补上这两个高度限制属性,就能和XML布局的显示效果完全一致:
seekBar { max = 2 progress = 1 // 新增进度条高度控制属性 maxHeight = dip(2) minHeight = dip(2) progressDrawable = drawable(R.drawable.seek_bar_progress) thumb = drawable(R.drawable.seek_bar_thumb) onSeekBarChangeListener { onProgressChanged { _, progress, _ -> // 业务逻辑 } } }.lparams(matchParent) { setMargins(dip(16), dip(8), dip(16), dip(8)) }
加上maxHeight和minHeight后,进度条的高度被固定住,thumb也能正常对齐在进度条上方,不会再出现布局错乱的情况。
内容的提问来源于stack exchange,提问作者Alexandr Minkin
相关产品推荐
相关产品推荐

