2011-04-22 13 views
18

Tengo una ruleta con un estilo. El estilo solo contiene un fondo para el girador. El problema es que no importa qué imagen use para el fondo, el texto del girador siempre se empuja hacia la izquierda.Android - El texto se empuja hacia la izquierda en un Spinner

Esta es la declaración de la Spinner en el 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> 

Además, recibo una advertencia bajo el atributo android: gravedad que dice que es un atributo XML desconocido.

No puedo entender por qué lo hace.

Gracias

+0

Fueron le permite enviar código mínimo completa y recursos, por ejemplo, archivos de imágenes, necesarios para replicar su problema, junto con una captura de pantalla del problema, y tal vez incluso una maqueta o captura de pantalla del objetivo, probablemente ayude a otros a ayudarlo. –

+0

Lo siento, lo arreglé ahora. – Tofira

+0

Desafortunadamente, todavía no ha proporcionado un código mínimo completo para replicar su problema, por lo que los posibles ayudantes quedan para adivinar cómo se vería el código faltante. ¿Estás usando android.R.layout.simple_spinner_dropdown_item y android.R.layout.simple_spinner_item? No lo sé, pero supongo que lo eres.Una solución a su problema implica no utilizar esos dos diseños simples, sino proporcionar un diseño personalizado, en su lugar. –

Respuesta

37

Continuando desde mi último comentario anterior ..

El siguiente código modifica the Hello Spinner tutorial application para mostrar el contenido del texto spinner ts centrado horizontalmente, como se ve en las siguientes dos capturas de pantalla.

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.

Es de esperar que proporciona suficiente dirección para solucionar el problema.

+0

pero no puede ver la casilla de verificación? –

+0

¿cómo se agrega relleno a los elementos individuales en la ruleta? – Jarrette

+0

'android: paddingBottom =" 10dp " android: paddingTop =" 10dp "' - agregue el relleno para el espacio – cryptic

4

Añadir gravedad en su archivo XML ...

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

O añadir gravedad en el código Java ...

Spinner spinner = (Spinner)findViewById(R.id.spinner); 
spinner.setGravity(17); 
//17 = center 
+5

Lo siento, ya lo intenté pero no funciona por alguna razón ... – Tofira

+0

¿Alguna vez descubrió lo que faltaba? La respuesta aceptada también tiene el atributo de gravedad, pero el código en sí parece ser superfluo ya que mis spinners están configurados desde el XML sin necesidad de ningún código. – Michael

0

Si quieres ver las casillas de verificación en el menú desplegable durante el uso de su propio diseño:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
      mContext, R.array.room_list, R.layout.spinner_layout); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    yourSpinner.setAdapter(adapter); 

por favor que la "androide" antes "R.layout ...." en la línea donde se pone el recurso de vista desplegable!

1

Tuve este problema también y la respuesta aceptada no funcionó para mí.

Si esto también se aplica a usted, asegúrese de que el diseño principal no anule la gravedad del elemento giratorio. En mi caso, tuve que establecer la gravedad de todo el Spinner a la derecha.

5

uso androide: Etiqueta TextAlignment = "centro" en la ruleta

<android.support.v7.widget.AppCompatSpinner 
     android:id="@+id/state" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textAlignment="center"/> 
Cuestiones relacionadas