TextView setGravity()在java中不起作用

Raf*_*l T 10 java android bug-tracking gravity android-layout

我遇到了问题我不知道是什么原因造成的.我有一个非常简单的布局,如下所示:

<?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>
Run Code Online (Sandbox Code Playgroud)

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

我会尝试将调试目的包括在内,每次使用另一个重力,它甚至可以工作.所以我认为我的布局一切都没问题,并且必须有一个Bug或其他我想念的东西.有人可以给我一个提示,我也可以尝试,或者是什么原因导致这个问题?

waq*_*lam 29

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


小智 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);
Run Code Online (Sandbox Code Playgroud)