TextView setGravity() 在 java 中不起作用

我被困在一个问题上,我不知道,是什么原因造成的。我有一个非常简单的布局,如下所示:

<?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内部的重力,我会在布局编辑器和手机上看到相同的结果。如果我想以编程方式应用重力,它不会改变任何东西。我无法在TextView上用Java设置布局重力myTextView.setGravity(Gravity.CENTER)

出于调试目的,我将尝试将它们包含三次,每个具有另一个重力,这确实有效。因此,我认为我的布局一切都很好,并且必须有一个错误或我错过的其他东西。有人可以给我一个提示,我也可以尝试什么,或者是什么原因导致这个问题?


答案 1

设置文本视图的宽度,然后您可以使用编程方式设置它android:layout_width="fill_parent"myTextView.setGravity(Gravity.CENTER)


答案 2

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

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

推荐