如何在安卓中设置样式的重力?

3

我在一个水平线性布局中有一个文本视图,这个文本视图是顶部对齐的。我希望它竖直居中。

我将文本视图设置为名为“arrow”的样式。

<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>

java

            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);

然而,这仍然不能使其垂直对齐... 有人知道出了什么问题吗?谢谢。

请在您的布局XML文件中发布包含TextView的代码。 - FoamyGuy
我使用Java代码创建它。我在上面发布了它。 - omega
2个回答

4
setTextAppearance()的javadocs说明:

从指定的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的宽度和高度为WRAP_CONTENT,因此android:gravity不会产生任何影响。所以真正起作用的是android:layout_gravity这段代码。


0

您也可以尝试在textView上使用SetGravitysetGravity


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接