Sunday, 1 April 2018

java - Textview Gravity not working properly in android



What's wrong with my code, I'm trying to display my TextView named "invalid", in different locations (left,right,center), but the gravity (left,right,center) won't work! enter image description here



My text.xml is





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

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/etext"

android:hint="@string/comment"
android:inputType="textPassword"/>

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="100">
android:id="@+id/button1"

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button"
android:layout_weight="25"/>

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"/>


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" />



My TextPlay.java is



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);
}
}
});
}

}

Answer



You set this text view a width of "wrap_content" it means, what ever the text is, the view take the size of the text.



and in the LinearLayout , the default gravity (used here) is 'center'



you should try this :




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

No comments:

Post a Comment

casting - Why wasn&#39;t Tobey Maguire in The Amazing Spider-Man? - Movies &amp; TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...