2010-11-10 104 views
11

有没有人试图写他自己的实现ViewGroup与一些TextViews呢?TextView重力

我有一个问题,在这样的实现TextViews不尊重重力属性TextView.setGravity(Gravity.CENTER)和文本位于左上角。

任何人都可以帮我找出原因吗?

编辑:

确定。没关系,我已经自己想清楚了。

如果enyone有兴趣,我只是改写方法onMeasure()(为我所有TextViews)和更改呼叫从super.onMeasure()setMeasuredDimension(int, int)和重力开始正常工作。

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

private static class GravityTextView extends TextView { 

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

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

} 
+0

很酷,感谢分享! – 2010-11-16 13:58:10

+0

感谢分享!一个说明,我不得不从onLayout在TextViews上调用度量。因此,如上所述重写onMeasure并调用度量。 – 2011-08-20 07:48:51

+0

尝试设置线性/相对布局的重力 – 2014-10-28 11:28:22

回答

3

这是不是你只是想设置错误属性错误的行为。

With TextView.setGravity(Gravity.CENTER)您正在设置TextView内容的重力。

你在找什么是layout_gravity

+0

这正是我想要做的。 例如,如果我的TextView位于自定义布局中的某个随机位置,并且它占用了200像素的空间,并且其中的文本只有50像素,我希望该文本在该TextView的中心对齐(所以TextView将会仍然保持200px的空间,但文本将位于它的中间,使得TextField边框和实际文本之间的距离为75px)。 – 2010-11-11 08:00:48