TextView.setGravity()在自定义ViewGroup中的奇怪行为

时间:2015-04-07 03:42:26

标签: android android-layout android-custom-view viewgroup

我有一个项目,我需要以编程方式创建TextView并将其放在自定义ViewGroup中。当我实例化textView时,我设置了layoutParams,text,gravity等,然后将其添加到ViewGroup。然后在onLayout()的{​​{1}}方法中尝试定位它(按照Google指南的建议)。
对于textView的文本重力,一切都很好ViewGroup。只有EXCEPT似乎有效。整个问题可归结为几行代码,如下所示:

center_horizontal

和XML代码:

public class Custom extends ViewGroup {
TextView mTv;
public Custom(Context context, AttributeSet attrs) {
    super(context, attrs);
    mTv = new TextView(context);
    mTv.setText("can't touch this");
    mTv.setGravity(Gravity.CENTER);
    ViewGroup.LayoutParams params=new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
    mTv.setBackgroundColor(context.getResources().getColor(R.color.paleblue));
    this.addView(mTv,params);
}

public Custom(Context context) {
    this(context,null);

}


@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    mTv.layout(l,t,r,b);
}}

The text should be in the center of the screen.

文字应位于屏幕中央。谁能解释为什么会这样?感谢

1 个答案:

答案 0 :(得分:0)

如果您想覆盖ViewGroup,请检查this,这是向您展示如何扩展ViewGroup的官方文档。