在 Android 上以编程方式将多个 textView 居中
Centering multiple textViews programmatically on Android
我有一个 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 的垂直位置,但为了更清楚地说明,我手动将第二个向下移动.......)
我当时的想法是创建一个 'textLayout',我可以向其中添加我的所有 textView,然后只需将该 textLayout 添加到我的主布局。从而便于使用一行代码添加和删除所有 textView。
请注意,我没有使用,也不想为此使用 XML - 我想知道如何以编程方式执行此操作。
我错过了什么?
编辑 这是我创建主布局的方式,我正在向其中添加 textView.....
layout = new RelativeLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
当您将 "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).
我有一个 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 的垂直位置,但为了更清楚地说明,我手动将第二个向下移动.......)
我当时的想法是创建一个 'textLayout',我可以向其中添加我的所有 textView,然后只需将该 textLayout 添加到我的主布局。从而便于使用一行代码添加和删除所有 textView。
请注意,我没有使用,也不想为此使用 XML - 我想知道如何以编程方式执行此操作。
我错过了什么?
编辑 这是我创建主布局的方式,我正在向其中添加 textView.....
layout = new RelativeLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
当您将 "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).