RelativeLayout布局,不希望文本盖住其他组件

简单的图先看上一看

上面使用的是RelativeLayout布局(不要问为什么不用LinearLayout,因为最右边的信箱的右上角还会有个红点,相对布局直接些)

需要实现的效果是,TextView居中,当文本过长时不能覆盖住右边的组件,而是用点点代替超出部分。

最开始的想法是:

  既然要居中,设置TextView的centerHorizontal为true;

  不能超出右边,设置toLeftOf为右边的组件。

以上,so easy。但是运行起来的效果是,TextView并未居中!!!

为什么呢?尝试一下,把toLeftOf这句去除,发现文本居中了。可以发现,使用toLeftOf之后,TextView会往右边的组件靠拢。。

解决方案:

  在TextView外嵌套一层LinearLayout,toLeftOf右边组件,使之填充右边组件左侧的所有区域,然后设置gravity为center。

这样,包含在LinearLayout中的TextView在文本过长时,也不会超出了。

原文地址:https://www.cnblogs.com/ivan-aldrich/p/4978007.html