我遇到了问题我不知道是什么原因造成的。 我有一个非常简单的布局:
<?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或其他我想念的东西。 有人能给我一个提示,我也可以尝试,或者是什么原因导致这个问题?
答案 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
。