简单的图先看上一看
上面使用的是RelativeLayout布局(不要问为什么不用LinearLayout,因为最右边的信箱的右上角还会有个红点,相对布局直接些)
需要实现的效果是,TextView居中,当文本过长时不能覆盖住右边的组件,而是用点点代替超出部分。
最开始的想法是:
既然要居中,设置TextView的centerHorizontal为true;
不能超出右边,设置toLeftOf为右边的组件。
以上,so easy。但是运行起来的效果是,TextView并未居中!!!
为什么呢?尝试一下,把toLeftOf这句去除,发现文本居中了。可以发现,使用toLeftOf之后,TextView会往右边的组件靠拢。。
解决方案:
在TextView外嵌套一层LinearLayout,toLeftOf右边组件,使之填充右边组件左侧的所有区域,然后设置gravity为center。
这样,包含在LinearLayout中的TextView在文本过长时,也不会超出了。