如何通过多项选择重新调整 Spinner 中项目的高度? [英] How to re size the Height of the Items in Spinner with multiple choice?
问题描述
我只是根据这个 stackoverflow 显示带有多项选择的 spinner
答案(见@Destil 答案).这里我的问题是我无法通过多项选择重新调整 Spinner 中项目的高度.如何重新调整每个项目的高度?
I just showing the spinner
with multiple choice based on this stackoverflow answer(see @Destil answer). Here my problem is I can't re size the Height of the items in Spinner with multiple choice. How to re size the Height of each Items?
推荐答案
据我所知,您必须使用自定义适配器,并覆盖 getDropDown 和 getView 方法.您将能够自定义每个项目以自定义布局.
As i know, you will have to use a custom adapter, and override the getDropDown and the getView methods. You will be able to customize each item customizing the layout.
嗯……词很好,例子更好,试试这样的:
Well... words are good, example better, try something like that :
public class CustomStringArrayAdapter extends ArrayAdapter<String>
{
private Activity myActivity;
public CustomStringArrayAdapter(Context context, int layoutResourceId, int textViewResourceId, List<String> objects, Activity act)
{
super(context, layoutResourceId, textViewResourceId, objects);
this.myActivity = act;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
return getCustomView(position, convertView, parent);
}
public View getCustomView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = myActivity.getLayoutInflater();
View row = inflater.inflate(R.layout.spinner_layout, parent, false);
TextView label = (TextView) row.findViewById(R.id.spinner_textview);
label.setText(getItem(position));
LinearLayout layout = (LinearLayout) row.findViewById(R.id.spinner_linear_layout);
return row;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = myActivity.getLayoutInflater();
View row = inflater.inflate(R.layout.spinner_layout, parent, false);
TextView label = (TextView) row.findViewById(R.id.spinner_textview);
label.setText(getItem(position));
return row;
}
}
和布局:
<?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="50dp"
android:layout_gravity="center"
android:gravity="center"
android:background="@drawable/transparent"
android:id="@+id/spinner_linear_layout">
<TextView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:gravity="center"
android:layout_gravity="center"
android:textSize="21sp"
android:singleLine="true"
android:id="@+id/spinner_textview"
android:textColor="@color/black" />
</LinearLayout>
(但这只是一个示例,如果您想根据选择调整大小,您可以在每个对象上添加一个布尔值 mSelected 并根据此布尔值更改视图)
(But it's just an sample, if you want to resize depending on the selection, you can add a boolean mSelected on each object and change the view depending on this boolean)
然后在 MultiSpinner 中:
Edit : Then in the MultiSpinner :
删除这个:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),
android.R.layout.simple_spinner_item,
new String[] { spinnerText });
setAdapter(adapter);
并在微调器中添加新的自定义适配器:
and add the new custom adapter in the spinner :
MultiSpinner mMultiSpinner = (MultiSpinner) findViewById(R.id.multispinner);
mMultiSpinner.setAdapter(mCustomArrayAdapter);
这篇关于如何通过多项选择重新调整 Spinner 中项目的高度?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!