如何通过多项选择重新调整 Spinner 中项目的高度?

Posted

技术标签:

【中文标题】如何通过多项选择重新调整 Spinner 中项目的高度?【英文标题】:How to re size the Height of the Items in Spinner with multiple choice? 【发布时间】:2012-02-11 06:58:54 【问题描述】:

我只是根据这个*** answer(see @Destil answer) 显示带有多项选择的spinner。这里我的问题是我无法通过多项选择调整 Spinner 中项目的高度。如何重新调整每个项目的高度?

【问题讨论】:

表示你想增加微调器中项目的字体大小? 没有。需要减小字体大小和项目高度。 我已经提到过了。如何在微调器中调整项目的大小? 【参考方案1】:

据我所知,您必须使用自定义适配器,并覆盖 getDropDown 和 getView 方法。您将能够自定义每个项目以自定义布局。

嗯...文字很好,例子更好,试试这样的:

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_
    android:layout_
    android:layout_gravity="center"
    android:gravity="center"
    android:background="@drawable/transparent"
    android:id="@+id/spinner_linear_layout">
    <TextView
        android:layout_
        android:layout_
        android:gravity="center"
        android:layout_gravity="center"
        android:textSize="21sp"
        android:singleLine="true"
        android:id="@+id/spinner_textview"
        android:textColor="@color/black" />
</LinearLayout>

(但这只是一个示例,如果您想根据选择调整大小,您可以在每个对象上添加一个布尔 mSelected 并根据该布尔值更改视图)

编辑:然后在 MultiSpinner 中:

删除这个:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),
            android.R.layout.simple_spinner_item,
            new String[]  spinnerText );
    setAdapter(adapter);

并在微调器中添加新的自定义适配器:

MultiSpinner mMultiSpinner = (MultiSpinner) findViewById(R.id.multispinner);
mMultiSpinner.setAdapter(mCustomArrayAdapter);

【讨论】:

这是多选下拉菜单吗? 多选下拉菜单扩展了 Spinner,因此您将能够 setAdapter(customAdapter)。我没有尝试,但我认为这是最好的方法......

以上是关于如何通过多项选择重新调整 Spinner 中项目的高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Spinner 中隐藏一项

Spinner - 关注第一个项目

android spinner默认啥都不选择

在 Robotium 中选择 Spinner 错误项

Android Spinner重复项仅提供第一个重复项的位置

获取微调器选定项目文本?