2013-09-26 19 views
9

Kodumda yanlış olan, farklı konumlarda (sol, sağ, orta), "invalid" adlı TextView görüntülemeye çalışıyorum, ancak yerçekimi (sol, sağ, orta) kazandı ' Çalış! enter image description hereTextview Gravity, Android'de düzgün çalışmıyor

Benim Text.xml olan

<?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> 

Benim 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

kaldır android gibi bir şey yok emin olun textView1 için android:layout_width="fill_parent" set @ + id/textView1 için düzeninizi seçin ve ... – Vamshi

+0

'TextView' genişliğini 'match_parent' olarak değiştirin veya yerine 'android: layout_gravity' kullanın. –

+0

Bu sorulara da bir göz atın: [link] (http://stackoverflow.com/questions/3482742/android-gravity-and-layout-gravity) – andysando

cevap

20

Bu metin "wrap_content" genişliğinde görünümünü belirlemek değil mi, ne demek Metin her zaman metnin boyutunu alır. zamanın

<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:

ve LinearLayout yılında

, (burada kullanılan) varsayılan yerçekimi ' merkezi' Bu denemelisiniz

olduğunu.

gravity ve layout_gravity ile hata veriyorsunuz.

gravity metin TextView yılında kendisini uyumlu hale getirecektir yoludur. TextViewwrap_content içinde bulunan bu TextView tam olarak metnin boyutu tam olarak, hiçbir şey yapmaz.

layout_gravity

Sen TextView'un genişliği wrap_content verdik dikey LinearLayout

+0

@Harmen 'yerçekimi 'sadece' TextView 'için tanımlanan bir özelliktir. – njzk2

1

daki durumda TextView ailesindeki saflarına katılması olacaktır yoludur ve bu kodu aşağıda kontrol edin ve bunu değiştirmek, sorun senin kodu. dan = "center" yerçekimi: layout_gravity = "center" android:

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