2013-09-26 5 views
9

Что не так с моим кодом, я пытаюсь отобразить свой TextView с именем "invalid" в разных местах (влево, вправо, в центре), но сила тяжести (влево, вправо, в центре) работа! enter image description hereTextview Gravity не работает должным образом в android

Мой 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

удалить андроида: layout_gravity = "центр" андроида: гравитационный = "центр" от ваш макет для @ + 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", это означает, что когда-либо текст, вид принимает размер текста.

и в LinearLayout, гравитация по умолчанию (используется здесь) является 'центр'

вы должны попробовать это:

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

Вы ошибаетесь gravity и layout_gravity.

gravity - это то, как текст выровнят себя в TextView. TextView находится в wrap_content, это ничего не делает, так как TextView - это точно размер текста.

layout_gravity является способом TextView выровняет себя в своих родителей, в вашем случае в вертикальном LinearLayout

+0

@Harmen 'gravity' - это атрибут, определенный только для TextView. – njzk2

1

Вы дали ширину TextView wrap_content, и это проблема, проверьте ниже код и заменить его на ваш код.

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

набор android:layout_width="fill_parent" для textView1

0

Убедитесь, что вы не имеете что-то вроде этого торчать

app:layout_box="left|top" 
Смежные вопросы