Android

Dialog的自定义布局-内容体多行按钮显示不全问题

2022-07-25  本文已影响0人  码农修行之路
场景:dialog弹框-title、msg、btn
问题:dialog弹框部分测试机型上,底部btn展示不全,像被截断展示

描述:一个Dialog的自定义布局的根布局(LinearLayout)宽度match_parent,高度wrap_content,国际化时,发现多行内容会导致底部控价显示不全(部分机型),高度没有自适应,像是固定高度,被挤扁,其中内容区域一个TextView,因支持国际话可能有多行展示,Textview下方还有一个ConstraintLayout(里面有一行按钮)内容区域TextView高度wrap_content,当内容区域内容展示多行时,下方的ConstraintLayout里的控件被截断只展示了一部分。

  1. 不优雅方案:布局文件中内容TextView设置指定行数和最大行数,虽然展示不那么优雅但是也能解决90%的情况,毕竟也不是很多有多行文本的dialog,如果多的话,可以尝试中间内容区域给一个可滑动的文本控件设置默认高度(一开始给定具体的高度数值)
    例如:最多展示三行,默认一开始就支持三行内容的高度,布局不那么美观,超过三行末尾省略号(...)显示
android:ellipsize="end"
android:lines="3"
android:maxLines="3"
  1. 比较完美方案:setContentView之前,重新设置LayoutParams和View的其它属性值,在获取View后,根据属性值的设定重新计算布局高宽并绘制
val pas = LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.WRAP_CONTENT
        )
val view = LayoutInflater.from(context).inflate(R.layout.dialog_common_hint, null, false)
pas.setMargins(ScreenUtil.dp2px(45f).toInt(), 0, ScreenUtil.dp2px(45f).toInt(), 0)
view.layoutParams = pas
上一篇 下一篇

猜你喜欢

热点阅读