Android中textAlignment=viewEnd且singleLine=true时foreground失效问题咨询
Android中textAlignment=viewEnd且singleLine=true时foreground失效问题咨询
嘿,我来帮你捋捋这个问题哈~首先这不是Android的bug,而是废弃属性和新对齐方式的兼容性小坑。
你用到的singleLine="true"其实从API Level 30开始就被官方标记为废弃了,官方更推荐用android:maxLines="1"配合android:ellipsize来实现单行文本的效果。当你同时设置singleLine="true"和textAlignment="viewEnd"时,TextView内部的绘制逻辑会出现冲突,导致foreground没有正确渲染出来,所以你看不到底部TextView的蓝色效果。
给你两个可行的解决方案:
方案一:替换废弃属性(推荐)
把singleLine="true"换成android:maxLines="1",这样既能保留单行效果,又能让foreground和textAlignment完美兼容,代码修改后是这样的:<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:foreground="#800000FF" android:maxLines="1" android:text="world!" android:textAlignment="viewEnd" />方案二:改用gravity替代textAlignment(兼容旧版本)
如果你的项目需要兼容API 30以下的版本,也可以把textAlignment="viewEnd"换成android:gravity="end",配合singleLine="true"也能让foreground正常显示:<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:foreground="#800000FF" android:singleLine="true" android:text="world!" android:gravity="end" />
你可以试试这两种方法,应该就能看到底部TextView的蓝色foreground效果啦~
备注:内容来源于stack exchange,提问作者Andrew Usachov
相关产品推荐
相关产品推荐

