如何在剩余的可用空间中设置TextView以使文本居中?

时间:2014-07-28 21:03:42

标签: android android-layout

我正在设计一个通用弹出窗口的标题栏,其左上角有一个按钮,右上角有一个按钮,标题文本视图夹在它们之间。 (按钮不是简单的android.widget.Buttons,而是目前的碎片。)

这两个按钮需要是'wrap_content',因为它们中的实际文本/内容会从实例更改为实例。关键的是,两个按钮的宽度可能不同。结果,它们之间的“剩余空间”,由下面的“A”和“B”预定,不在周围视图的中心;但是我想把标题文本放在那个空间中,以便它在周围的视图中居中。

如果我天真地这样做,假设使用一个标题文本具有非零layoutWeight的LinearLayout(因此它填满剩余空间),文本将偏离中心:

                        A                                        B
[ Button 1 (ExtraSpace) ] [ ____________Title Text____________ ] [ Button 2 ]
                                      ^
                                      |
                                      |
                               center of window 

我更喜欢的是以某种方式调整Button 1和Button 2的大小,使它们具有相同的宽度,基本上添加了margin / padding / spacer视图/ relativelayout-magic / etc.以通常较窄的为准。这会使标题文本实际上在对话框中居中:

                        A                                        B
[ Button 1 (ExtraSpace) ] [ _____Title Text______ ] [ (ExtraSpace) Button 2 ]
                                      ^
                                      |
                                      |
                               center of window 

我也可以独立于按钮来定位/调整标题文本的大小;但重要的是文本的位置,如果有必要,对于两个按钮的内容进行正确的椭圆化,这样我最终不会试图在两个按钮的顶部显示标题文本。

1 个答案:

答案 0 :(得分:2)

使用方向设置为水平的LinearLayout包含两个按钮和TextView。
然后为所有视图提供 1 的layout_weight和 0dp 的layout_width。

通过这样做,您的所有视图均匀分布为 33%宽度