2012-10-13 163 views
12

he intentado mucho para cambiar la altura del elemento desplegable de ruleta .. pero no pude conseguir una buena solución .. PLZ me ayudarán chicos ..cómo cambiar la altura desplegable en spinner

aquí es un código loginactivityview.xml

 <Spinner 
     android:id="@+id/spinnerFacility" 
     android:layout_width="400dip" 
     android:layout_height="50dip" 
     android:layout_alignLeft="@+id/lpassword" 
     android:layout_below="@+id/lpassword" 
     android:layout_marginTop="32dip"    
     android:background="@drawable/location" 
     android:paddingLeft="10dip"    
     android:dropDownWidth="@style/dropDown" 
     android:minHeight="40dip"  
     android:typeface="monospace" /> 

loginrowspinner.xml

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

    <TextView 
    android:id="@+id/textViewRowFacility" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="left" 
    android:paddingBottom="5dip" 
    android:paddingLeft="6dip" 
    android:paddingRight="6dip" 
    android:paddingTop="5dip" 
    android:text="Facility" 
    android:textColor="#000000" 
    android:textSize="20dip" > 
</TextView> 

enter image description here

cómo cambiar la altura de caída hacia abajo alguna idea ..

+0

Comprobar siguiente URL para obtener la solución exacta: http://stackoverflow.com/questions/8878260/how-to-re- size-the-height-of-the-items-in-spinner-with-multiple-choice – Chase1986

+0

debe marcar la publicación de John como respuesta. –

Respuesta

0

Ha intentado algo así como android:layout_height="30dp" en lugar de fill_parent para ninguno de esos elementos en loginrowspinner.xml?

+1

s jefe va a cambiar la altura de la ruleta, no sirve de nada .. quiero altura desplegable –

+0

por fin tengo el jefe de salida .. –

41

Simplemente agregue esto a su adaptador.

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
+0

esta es la solución más simple y mejor. Gracias. –

+0

¡Esta debería ser la solución aceptada! – Roel

+0

... solución tan inteligente :) – Davidm176

6

En loginrowspinner.xml, añadir android:minHeight="48dp"-TextView elemento.

<TextView 
    ... 
    android:id="@+id/textViewRowFacility" 
    android:minHeight="48dp" /> 
+0

Intenté con el enfoque anterior y eso fue lo que hizo.+1 – user755499

+0

¿De dónde viene ese TextView en Spinner? –

4

Tal vez puede ayudar ..

ArrayAdapter<String> yourSpinnerAdapter = new ArrayAdapter<String>(this, 
       R.layout.spinner_item, yourItem) { 

     @Override 
     public View getDropDownView(int position, View convertView, 
       ViewGroup parent) { 
      convertView = super.getDropDownView(position, convertView, 
        parent); 

      convertView.setVisibility(View.VISIBLE); 
      ViewGroup.LayoutParams p = convertView.getLayoutParams(); 
      p.height = 100; // set the height 
      convertView.setLayoutParams(p); 

      return convertView; 
     } 
    }; 
0

poner esto en su adaptador: convertView.setMinimumHeight (60); lo cual funciona para mi

1

Crear su propio TextView en la carpeta de diseño como éste, que se rellenará en emergente desplegable

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1" 
style="?android:attr/spinnerItemStyle" 
android:layout_width="match_parent" 
android:layout_height="60dp" 
android:gravity="center_vertical" 
android:paddingLeft="20dp" 
android:ellipsize="marquee" 
android:singleLine="true" 
android:textSize="18sp" 
android:textAlignment="inherit" /> 

Nota que he proporcionado

android:layout_height="60dp" 

y

android:paddingLeft="20dp" 

y utilizar esto para su spinner, así

Spinner dropdown = (Spinner)findViewById(R.id.sosMode); 
String[] items = new String[]{"Date", "Travelling alone"}; 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.custom_dropdown_list, items); 
dropdown.setAdapter(adapter); 

esto funciona para mí :)

1

Usted puede intentar usar dps.

@Override 
public View getDropDownView(int position, View convertView, ViewGroup parent) { 

    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    TextView textview = (TextView)inflater.inflate(android.R.layout.simple_spinner_item, null); 

    textview.setText(alOpcion.get(position).getOpcionName()); 

    DisplayMetrics metrics = parent.getResources().getDisplayMetrics(); 
    float dp = 40f; 
    float fpixels = metrics.density * dp; 
    int pixels = (int) (fpixels + 0.5f); 

    textview.setHeight(pixels); 

    return textview; 
} 
0

// Esto también podría ayudar:

adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, dataForAdapter) { 


     @Override 
     public View getDropDownView(int position, View convertView, ViewGroup parent) { 
      View v = super.getView(position, convertView, parent); 
      v.setMinimumHeight((int) (40*cx.getResources().getDisplayMetrics().density)); 
      v.setBackgroundColor(Color.rgb(222, 222, 222)); 


      return v; 
     } 

    }; 
+0

¿Podría explicar '' 40 * cx.getResources(). GetDisplayMetrics(). Density' '? – backslashN

+0

@backslashN, al escribir código Java para Android, no puede usar unidades dp y debe especificar en píxeles (a diferencia de XML, que también acepta dp). Si configura 40px para todos los casos, la altura aún se verá pequeña en las pantallas con muchos píxeles. Es por eso que usamos este código para tener en cuenta la densidad actual del dispositivo – kit

Cuestiones relacionadas