2013-09-26 15 views
9

私のコードで何が問題なのですか?"invalid"というTextViewを異なる場所(左、右、中央)に表示しようとしていますが、仕事! enter image description hereTextview重力がアンドロイドで正しく機能していない

マイtext.xmlがある

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="20dp" > 

    <EditText 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/etext" 
     android:hint="@string/comment" 
     android:inputType="textPassword"/> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:weightSum="100"> 
     <Button 
      android:id="@+id/button1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/button" 
      android:layout_weight="25"/> 

     <ToggleButton 
      android:id="@+id/toggleButton1" 
      android:layout_width="fill_parent" 
      android:layout_height="40dp" 
      android:text="ToggleButton" 
      android:layout_weight="75" 
      android:checked="true" 
      android:paddingLeft="15dp"/> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/invalid" 
     android:layout_gravity="center" 
     android:gravity="center" /> 
</LinearLayout> 

マイTextPlay.javaが

public class TextPlay extends Activity { 
    Button button; 
    ToggleButton tbutton; 
    TextView tview; 
    EditText et; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.text); 
     button = (Button) findViewById(R.id.button1); 
     tbutton = (ToggleButton) findViewById(R.id.toggleButton1); 
     tview = (TextView) findViewById(R.id.textView1); 
     et = (EditText) findViewById(R.id.etext); 
     tbutton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if (tbutton.isChecked()) { 
        et.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 
       } else { 
        et.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); 
       } 
      } 
     }); 
     button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       String input = et.getText().toString(); 
       System.out.println(input); 
       if (input.contentEquals("left")) { 
        tview.setGravity(Gravity.LEFT); 
       } else if (input.contentEquals("right")) { 
        System.out.println("inside right"); 
        tview.setGravity(Gravity.RIGHT); 
       } else if (input.contentEquals("right")) { 
        tview.setGravity(Gravity.CENTER); 
       } 
      } 
     }); 
    } 
} 
+0

削除アンドロイドのようなものを持っていないことを確認してくださいtextView1ためandroid:layout_width="fill_parent"を設定しました@ + id/textView1のレイアウトを試してみてください。 – Vamshi

+0

'TextView'の幅を' match_parent'に変更するか、代わりに 'android:layout_gravity'を使用してください。 –

+0

この質問もよく見てください。[link](http://stackoverflow.com/questions/3482742/android-gravity-and-layout-gravity) – andysando

答えて

20

あなたは、このテキストは "wrap_content" の幅を表示しているそれは、何を意味しこれまでのテキストは、ビューはテキストのサイズを取る。時間の

<TextView 
android:id="@+id/textView1" 
android:layout_width="match_parent" <= change this 
android:layout_height="wrap_content" 
android:text="@string/invalid" 
android:gravity="center" <= then this gravity will be taken into account 
/> 
26

99%、not working properly == not used properly

LinearLayout

は、(ここで使用)、デフォルトの重力は ' センター' あなたはこれを試してみてください

です。

gravitylayout_gravityを間違えています。

gravityは、テキストがのにアライメントされる方法です。 TextViewwrap_contentにありますが、これは何もしません。TextViewは正確にテキストのサイズです。

layout_gravityはあなたのTextView幅wrap_contentを与えている、それが問題である、コードの下にチェックして、あなたにそれを交換する垂直LinearLayout

+0

@Harmen 'gravity'は' TextView'にのみ定義された属性です。 – njzk2

1

TextViewはあなたのケースでは、その親に自分自身を整列する方法ですコード。から= "センター" 重力:layout_gravity = "センター" アンドロイド:

<TextView 
android:id="@+id/txtInvalid" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:text="@string/invalid" 
android:gravity="center" 
/> 
0

0

あなたはその周りにぶら下がっ

app:layout_box="left|top" 
関連する問題