wake-up-neo.com

so ändern Sie die Dropdown-Höhe im Spinner

ich habe viel versucht, die Dropdown-Elementhöhe des Spinners zu ändern. Ich konnte jedoch keine gute Lösung finden. Bitte helfen Sie mir, Jungs.

hier ist ein 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

wie kann ich die Höhe eines Dropdowns ändern? 

11
Rao's

Fügen Sie dies einfach Ihrem Adapter hinzu.

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

Fügen Sie in loginrowspinner.xml dem TextView-Element Android:minHeight="48dp" hinzu.

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

Vielleicht kann es helfen ..

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

Erstellen Sie eine eigene Textansicht in diesem Ordner, die in einem Dropdown-Popup-Fenster angezeigt wird

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

Hinweis, den ich zur Verfügung gestellt habe 

Android:layout_height="60dp"

und 

Android:paddingLeft="20dp"

und verwenden Sie dies für Ihren Spinner wie folgt

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

das funktioniert für mich :)

2

Sie können es mit dps versuchen.

@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é

Wie die Leute sagen, ist der beste Weg, hinzuzufügen

    Android:minHeight="48dp"

zu .xml. Aber wenn du es programmatisch machen willst, benutze:

    mspinner.setMinimumHeight(48);

als mspinner den Namen Ihres Spinners und 48 die neue Höhe der Option.

0
Aike

Haben Sie etwas wie Android:layout_height="30dp" anstelle von fill_parent für eines dieser Elemente in loginrowspinner.xml versucht?

0
es0329

fügen Sie dies Ihrem Adapter hinzu: convertView.setMinimumHeight (60); was für mich funktioniert.

0
user3070463

// Das könnte auch helfen:

    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

Ich bin im selben Problem stecken geblieben. Folgende Lösung wurde gefunden, um für mich zu arbeiten:

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

Hoffe es hilft jemandem !!!!

Vielen Dank

0
Anu Bhalla

Überschreiben Sie die Methode in der ArrayAdapter-Klasse

@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