12

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

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

出于调试目的,我将尝试将它们包含三次,每个重力都可以正常工作。所以我假设我的布局一切正常,一定有一个错误或其他我想念的东西。有人可以给我一个提示,我也可以尝试什么,或者是什么导致了这个问题?

4

3 回答 3

30

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

于 2012-04-14T16:01:32.803 回答
7

您需要设置 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);
于 2012-07-19T07:34:54.003 回答
2

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

于 2012-04-14T15:59:49.527 回答