【问题标题】:TextView gravity文本视图重力
【发布时间】:2010-11-10 15:22:13
【问题描述】:

有没有人尝试编写自己的 ViewGroup 实现,其中包含一些 TextView?

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

谁能帮我找出原因?

编辑:

好的。没关系,我已经自己想通了。

如果大家有兴趣,我只是重写了方法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);  
    }

}

【问题讨论】:

  • 感谢分享!注意,我也必须从 TextViews 上的 onLayout 调用 measure。所以像上面那样覆盖 onMeasure 并调用 measure。
  • 尝试设置线性/相对布局的重力

标签: android


【解决方案1】:

这不是您尝试设置错误属性的错误行为。

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

您正在寻找的是layout_gravity

【讨论】:

  • 这正是我想要做的。例如,如果我的 TextView 位于自定义布局中的某个随机位置,并且它占用 200px 的空间,而其中的文本只有 50px,我希望该文本在该 TextView 的中心对齐(因此 TextView 仍将保持 200px 的空间,但文本将在中间,使其在 TextView 边框和实际文本之间留出 75px 的边距)。
猜你喜欢
  • 2021-12-26
  • 2013-10-12
  • 2011-11-29
  • 2020-10-23
  • 2011-09-07
  • 2016-10-27
  • 1970-01-01
  • 2017-03-26
  • 2019-11-17
相关资源
最近更新 更多