2017-03-09 11 views
1

私はスペースを追加し、各アイテム間にブレークラインを追加する必要がある単純なダイナミックスピナーを作成しました。また、アイテムテキストの色、アイテムテキストサイズ......など、私はいくつかと、一般的なアダプタクラスを作成しているように、このスピナーは、ツールバー に作成され、これはアダプタダイナミックスピナーのアイテム間のスペースの追加方法

Spinner navigationSpinner = new Spinner(getSupportActionBar().getThemedContext()); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, Prests_Name); 
navigationSpinner.setAdapter(adapter); 

答えて

2

と私の簡単なコードである方法によって、私は同じ要件を持っています余分なパラメータ。これをチェックして要件に応じて変更することができます。

SpinnerAdapter

public class SpinnerAdapter<T> extends ArrayAdapter<T> { 

    private Context context; 
    private ArrayList<T> values; 
    private Typeface fontLight; 
    private int color, layoutId, textViewId; 
    //private int fontSize; 

    private boolean IsSingleLine; 
    private boolean IsFirstPositionSelectable, setTextSizeLimit = true; 

    public SpinnerAdapter(Context context, int resource, int textViewResourceId, 
     ArrayList<T> objects) { 
     super(context, resource, textViewResourceId, objects); 
     this.context = context; 
     this.values = objects; 
     this.layoutId = resource; 
     this.textViewId = textViewResourceId; 
    } 

    public SpinnerAdapter(Context context, int resource, ArrayList<T> objects, int color, 
     boolean isSingleLine) { 
     super(context, resource, objects); 

     this.context = context; 
     this.values = objects; 
     this.color = color; 
     this.IsSingleLine = isSingleLine; 
    } 

    @Override public int getCount() { 
     return values.size(); 
    } 

    @Override public T getItem(int position) { 
     return values.get(position); 
    } 

    @Override public long getItemId(int position) { 
     return position; 
    } 

    public boolean isFirstPositionSelectable() { 
     return IsFirstPositionSelectable; 
    } 

    public void setFirstPositionSelectable(boolean enable) { 
     IsFirstPositionSelectable = enable; 
    } 

    public void setSetTextSizeLimit(boolean setTextSizeLimit) { 
     this.setTextSizeLimit = setTextSizeLimit; 
    } 

    public Typeface getFontLight() { 
     return fontLight; 
    } 

    public void setFontLight(Typeface fontLight) { 
     this.fontLight = fontLight; 
    } 

    @Override public View getView(int position, View convertView, ViewGroup parent) { 

     if (convertView == null) { 
      LayoutInflater inflater = LayoutInflater.from(context); 

      if (layoutId == 0) { 
       convertView = inflater.inflate(android.R.layout.simple_spinner_item, parent, false); 
      } else { 
       convertView = inflater.inflate(layoutId, parent, false); 
      } 
     } 

     TextView label; 

     if (textViewId == 0) { 
      label = (TextView) convertView.findViewById(android.R.id.text1); 
     } else { 
      label = (TextView) convertView.findViewById(textViewId); 
     } 

     if (setTextSizeLimit) { 
      label.setFilters(new InputFilter[] { new InputFilter.LengthFilter(2) }); 
     } 

     label.setSingleLine(IsSingleLine); 
     label.setPaddingRelative(25, 15, 25, 15); 

     if (fontLight != null) 
      label.setTypeface(getFontLight()); 

     label.setText(values.toArray(new Object[values.size()])[position].toString()); 

     return label; 
    } 

    @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { 

     if (convertView == null) { 
      LayoutInflater inflater = LayoutInflater.from(context); 

      if (layoutId == 0) { 
       convertView = inflater.inflate(android.R.layout.simple_spinner_item, parent, false); 
      } else { 
       convertView = inflater.inflate(layoutId, parent, false); 
      } 
     } 

     TextView label; 

     if (textViewId == 0) { 
      label = (TextView) convertView.findViewById(android.R.id.text1); 
     } else { 
      label = (TextView) convertView.findViewById(textViewId); 
     } 


     //label.setPadding(30, 10, 10, 30); 
     //label.setTextSize(context.getResources().getDimension(R.dimen.text_size_small)); 
     if (fontLight != null) 
      label.setTypeface(fontLight); 

     label.setSingleLine(IsSingleLine); 

     label.setText(values.toArray(new Object[values.size()])[position].toString()); 

     return label; 
    } 
} 
+0

あなたは、私は、アダプタを使用してカスタムスピナーを作成する必要があることを意味ですか? @androidnoobdev –

+0

@ Dev.7arooneyデフォルトのスピナーでカスタムアダプターを使用せず、そのアダプターですべてのカスタマイズを行います。 – androidnoobdev

+0

お手伝いをしてくれてありがとうございます –

関連する問題