3

我在水平线性布局中有一个 textview,并且 textview 是顶部对齐的。我希望它垂直对齐。

我将 textview 设置为一种名为“箭头”的样式

<style name="arrow">
    <item name="android:textSize">30sp</item>
    <item name="android:textColor">#ffffff</item>
    <item name="android:textStyle">bold</item>
    <item name="android:gravity">center</item>
    <item name="android:layout_gravity">center</item>
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
</style>

爪哇

            LinearLayout LL = new LinearLayout(this);
            LL.setOrientation(LinearLayout.HORIZONTAL);
            LL.setPadding(15, 15, 15, 15);
            LinearLayout.LayoutParams courseMargin = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
            courseMargin.setMargins(5, 5, 5, 5);
            LL.setLayoutParams(courseMargin);

                            // here I add more things into LL...

            TextView arrow = new TextView(this);
            arrow.setText(">");
            arrow.setTextAppearance(this, R.style.arrow);
            LL.addView(arrow);

然而,这仍然没有使它垂直对齐......

有谁知道这里发生了什么?

谢谢

4

2 回答 2

4

状态的javadocs setTextAppearance()

设置来自指定 TextAppearance 资源的文本颜色、大小、样式、提示颜色和突出显示颜色。

其中不包括有关位置或重力的任何内容。我猜这就是为什么你的重力没有任何影响。

试试这样:

//for android:gravity
arrow.setGravity(Gravity.CENTER);

//for android:layout_gravity
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity=Gravity.CENTER;
arrow.setLayoutParams(params);

话虽这么说,因为你TextView是 width 和 height WRAP_CONTENTandroid:gravity不会有任何影响。所以真正的android:layout_gravity代码块应该是你所需要的。

于 2013-10-16T01:37:03.033 回答
0

您也可以尝试SetGravity在您的 textView 上使用。设置重力

于 2013-10-16T01:34:48.057 回答