文本视图对齐方式

12

有人尝试过自己编写带有一些TextView的ViewGroup实现吗?

我遇到了一个问题,这样实现中的TextViews不会遵循gravity属性TextView.setGravity(Gravity.CENTER),文本被定位在左上角。

有人能帮我找出原因吗?

编辑:

好的。没关系,我已经自己解决了。

如果有人感兴趣,我只是重写了onMeasure()方法(对于我所有的TextView),并将调用从super.onMeasure()更改为setMeasuredDimension(int, int),gravity就开始正常工作了。

基本上,在我的自定义布局中,我使用以下类来显示文本:

private static class GravityTextView extends TextView {  

    public GravityTextView(Context context) {  
        super(context);  
    }

    @Override  
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  
        setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);  
    }

}

谢谢分享!顺便说明一下,我也必须在TextViews上从onLayout调用measure。所以,按照上述方法重写onMeasure并调用measure。 - Bogdan Balan
尝试设置线性/相对布局的重力。 - ASHISH KUMAR Tiwary
1个回答

3

你并没有做错,只是试图设置了错误的属性。

通过 TextView.setGravity(Gravity.CENTER) 你正在设置 TextView 内容的对齐方式。

而你所需要的是 layout_gravity 属性。


这正是我想要做的事情。 例如,如果我的TextView在自定义布局中的某个随机位置,并且它占用了200px的空间,而其中的文本只有50px,我希望该文本在该TextView的中心对齐(因此TextView仍将保持其200px的空间,但文本将位于其中间,使得TextView边框和实际文本之间有75px的边距)。 - Alex Orlov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接