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>
wie kann ich die Höhe eines Dropdowns ändern?
Fügen Sie dies einfach Ihrem Adapter hinzu.
adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
Fügen Sie in loginrowspinner.xml dem TextView
-Element Android:minHeight="48dp"
hinzu.
<TextView
...
Android:id="@+id/textViewRowFacility"
Android:minHeight="48dp" />
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;
}
};
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 :)
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;
}
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.
Haben Sie etwas wie Android:layout_height="30dp"
anstelle von fill_parent
für eines dieser Elemente in loginrowspinner.xml versucht?
fügen Sie dies Ihrem Adapter hinzu: convertView.setMinimumHeight (60); was für mich funktioniert.
// 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;
}
};
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
Ü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;
}