TextView setGravity()在java中不起作用

时间:2012-04-14 15:55:36

标签: java android android-layout bug-tracking gravity

我遇到了问题我不知道是什么原因造成的。 我有一个非常简单的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
    android:id="@+id/my_text_view"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_gravity="NOTE_THIS"
    android:textColor="#FFFFFF"
    android:textSize="22dp"
    android:text="TestText"/>
</LinearLayout>

包含在另一个布局中。如果我改变xml内部的重力,我会在Layout-Editor和手机上看到相同的结果。如果我想以编程方式应用Gravity,就像myTextView.setGravity(Gravity.CENTER)一样,它不会改变任何东西。而且我不能在TextView上用Java设置LayoutGravity

我会尝试进行调试,将它们包含三次,每次都有另一个引力,甚至可以正常工作。所以我认为我的布局一切都没问题,并且必须有一个Bug或其他我想念的东西。 有人能给我一个提示,我也可以尝试,或者是什么原因导致这个问题?

3 个答案:

答案 0 :(得分:26)

将TextView的宽度设置为android:layout_width="fill_parent",然后您可以使用myTextView.setGravity(Gravity.CENTER)

以编程方式设置它

答案 1 :(得分:6)

您需要设置LayoutParams对象的重力而不是View本身:

TextView tv = new TextView(getApplicationContext());
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
lp.gravity = Gravity.CENTER;
tv.setLayoutParams(lp);

答案 2 :(得分:1)

当你使用LinearLayout作为父级时,layout_gravity出现在图片中,它对齐控件而不是控件内的内容,所以, 而是使用android:layout_gravity使用android:gravity