在Android上以编程方式居中多个textViews

时间:2016-01-05 21:00:41

标签: android layout textview relativelayout

我有一个Open GL ES 2.0应用程序,并在我的GLSurfaceView顶部显示一个Android TextView。

我的实际文本视图显示正常,但现在我需要尝试将它们居中。

这是我到目前为止所做的:

    text1 = new TextView(this);
    text1.setText("This is some sample text");
    text1.setTextColor(Color.WHITE);
    text1.setTextSize(textSize);

    text2= new TextView(this);
    text2.setText("And this is some more sample text");
    text2.setTextColor(Color.WHITE);
    text2.setTextSize(textSize);

    RelativeLayout.LayoutParams textParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.MATCH_PARENT);
    lp.addRule(RelativeLayout.CENTER_HORIZONTAL);

    textLayout = new RelativeLayout(this);
    textLayout.setLayoutParams(textParams);
    textLayout.addView(text1);
    textLayout.addView(text2);

    mainLayout.addView(textLayout);

然而,当我运行它时,只有text1居中。文本2不是,并从第一个(正确居中)textView的左侧开始。尽我所能,我似乎无法让他们两个居中。下图描述了我的意思:

请注意重新垂直放置 - 在我的实际结果中,两个TextView都处于相同的垂直/'y'位置,因此重叠 - 显然这是预期的我没有改变第二个TextView的垂直位置,但为了让事情更清楚,我已经手动移动了第二个.......)

enter image description here

我想要的想法是创建一个'textLayout',我可以添加所有textViews,然后将textLayout添加到我的主布局中。因此,只需一行代码就可以方便地添加和删除所有textView。

请注意,我没有使用XML,也不希望使用XML - 我想知道如何以编程方式执行此操作。

我错过了什么?

编辑以下是我如何创建我要添加textView的主布局......

layout = new RelativeLayout(this);
        layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,    LayoutParams.MATCH_PARENT));

1 个答案:

答案 0 :(得分:1)

当您将“RelativeLayout.CENTER_HORIZONTAL”作为规则添加到布局参数时,您实际在做的是告诉textLayout它应该在mainLayout中水平居中(请参阅http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html#attr_android:layout_centerHorizontal)。在代码中,你应该实际上做text1.setGravity(Gravity.CENTER)和text2.setGravity(Gravity.CENTER)。