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 内の重力を変更すると、Layout-Editor と電話で同じ結果が表示されます。重力をプログラムで適用したい場合は、myTextView.setGravity(Gravity.CENTER)何も変更しません。また、TextView で Java の LayoutGravity を設定できません

デバッグ目的で、それらをそれぞれ 3 回、別の重力でも含めるようにします。だから私は私のレイアウトですべてがうまくいっていると思います、そして私が見逃しているバグか何かがあるに違いありません。誰かが私にもできること、またはこの問題の原因を教えてもらえますか?

4

3 に答える 3

30

TextViewの幅をandroid:layout_width="fill_parent"設定すると、プログラムで設定できます。myTextView.setGravity(Gravity.CENTER)

于 2012-04-14T16:01:32.803 に答える
7

View 自体ではなく、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);
于 2012-07-19T07:34:54.003 に答える
2

LinearLayout を親として使用すると、 layout_gravity が画像に表示されますが、コントロール内のコンテンツではなくコントロールが配置されるため、代わりにandroid:layout_gravityuseを使用しますandroid:gravity

于 2012-04-14T15:59:49.527 に答える