web-dev-qa-db-fra.com

comment changer la hauteur dans spinner

j'ai beaucoup essayé de changer la hauteur d'élément déroulant de spinner .. mais je ne pouvais pas obtenir une bonne solution .. svp aidez-moi les gars ..

voici un code 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

comment changer la hauteur du menu déroulant toute idée .. 

11
Rao's

Ajoutez simplement ceci à votre adaptateur.

adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
47
John

Dans loginrowspinner.xml, ajoutez Android:minHeight="48dp" à l'élément TextView.

 <TextView 
     ...
     Android:id="@+id/textViewRowFacility"
     Android:minHeight="48dp" />
7
Jack

Peut-être que ça peut aider ..

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;
        }
    };
5
dimasgung

Créez votre propre affichage de texte dans le dossier de disposition comme celui-ci, qui sera renseigné dans une liste déroulante.

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

Note j'ai fourni 

Android:layout_height="60dp"

et 

Android:paddingLeft="20dp"

et l'utiliser pour votre spinner, comme ça

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

ça marche pour moi :)

2

Vous pouvez essayer d'utiliser 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;
}
1
Luis Colomé

Avez-vous essayé quelque chose comme Android:layout_height="30dp" au lieu de fill_parent pour l’un de ces éléments dans loginrowspinner.xml?

0
es0329

ajoutez ceci à votre adaptateur: convertView.setMinimumHeight (60); ce qui fonctionne pour moi.

0
user3070463

// Cela pourrait aussi aider:

    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
Marie Amida

Je me suis retrouvé coincé dans le même problème. Voici la solution suivante qui fonctionne pour moi:

 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Lollipop_MR1) {
        setSpinnerDropDownHeight()
    } else {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            mBinding?.included?.spinn?.getViewTreeObserver()?.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
                @RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
                override fun onGlobalLayout() {
                    mBinding?.included?.spinn?.dropDownVerticalOffset = mBinding?.included?.spinn?.getDropDownVerticalOffset()!! + mBinding?.included?.spinn?.getHeight()!!
                    mBinding?.included?.spinn?.viewTreeObserver!!.removeOnGlobalLayoutListener(this)
                }
            })

            mBinding?.included?.spinn?.dropDownVerticalOffset = 10
        }
    }

J'espère que ça aide quelqu'un !!!!

Merci

0
Anu Bhalla

Méthode de remplacement dans la classe ArrayAdapter

@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    View view = super.getDropDownView(position, convertView, parent);
    view.getLayoutParams().height = 50;
    return view;
}
0
Amit Yadav