How to re size the Height of the Items in Spinner with multiple choice?

后端 未结 1 680
梦毁少年i
梦毁少年i 2021-01-06 10:34

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 it

1条回答
  •  Happy的楠姐
    2021-01-06 11:00

    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
    {
    private Activity    myActivity;
    
    public CustomStringArrayAdapter(Context context, int layoutResourceId, int textViewResourceId, List 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;
        }
    
    }
    

    And the layout :

    
    
        
    
    

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

    Edit : Then in the MultiSpinner :

    Remove this :

    ArrayAdapter adapter = new ArrayAdapter(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);
    

    0 讨论(0)
提交回复
热议问题