Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - Text is Pushed to the Left in a Spinner

Tags:

android

I have a spinner with a style. The style only contains a background for the spinner. The problem is,that no matter which image I use for the background, the text of the spinner is always pushed to the left.

This is the declaration of the Spinner in the XML -

<Spinner
 android:layout_height="wrap_content"
 android:layout_toRightOf="@+id/minus"
 android:layout_width="wrap_content"
 android:layout_below="@+id/female"
 android:id="@+id/spin"
 android:gravity="center"
 android:background="@drawable/spin"
 android:layout_marginTop="10dip">
 </Spinner>

Also, I get a warning under the android:gravity attribute that says it's an unknown XML attribute.

I can't figure why it does that.

Thanks

like image 625
Tofira Avatar asked Apr 22 '11 12:04

Tofira


4 Answers

Continuing from my last comment above...

The following code modifies the Hello Spinner tutorial application to display the spinner text contents centered horizontally, as seen in the following two screenshots.

res/layout/my_spinner_textview.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    style="?android:attr/spinnerItemStyle"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center" />
public class HelloSpinner extends Activity
{
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array,
//        android.R.layout.simple_spinner_item);
        R.layout.my_spinner_textview);
//    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    adapter.setDropDownViewResource(R.layout.my_spinner_textview);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
  }

  //No other modification needed.

This hopefully provides enough direction to fix the problem.

like image 123
Thane Anthem Avatar answered Nov 15 '22 20:11

Thane Anthem


Use android:textAlignment="center" tag on spinner

 <android.support.v7.widget.AppCompatSpinner
        android:id="@+id/state"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAlignment="center"/>
like image 36
Pramod Garg Avatar answered Nov 15 '22 21:11

Pramod Garg


Add gravity in your xml file...

<Spinner
 android:gravity="center">
</Spinner>

Or add gravity in your java code...

Spinner spinner = (Spinner)findViewById(R.id.spinner);
spinner.setGravity(17);
//17 = center
like image 40
Tom O Avatar answered Nov 15 '22 21:11

Tom O


I had this problem as well and the accepted answer did not work to me.

If this also applies to you, make sure that no parent layout overrides the gravity of the spinner item. In my case, I had to set the gravity of the entire Spinner to right.

like image 40
Nikolai Hegelstad Avatar answered Nov 15 '22 21:11

Nikolai Hegelstad