12

Android 2.3.3 用のドロップダウン スピナーを作成する方法はありますか? 私はActionbarSherlockを使用しています。

これが私が意味することの例です:

ここに画像の説明を入力

ありがとう

4

2 に答える 2

26

現状では、あなたは幸運です。これは ActionBarSherlock で実行でき、4.0 より前のバージョンで動作します。ただし、Jake Wharton がこのように使用することを 100% 確信しているわけではありません。正確には「パブリック API」ではないためです (私が尋ねるつもりでした)。とにかく、最初に ActionBarSherlock クラスから拡張する独自のクラスを作成する必要があります。

public class MyIcsSpinner extends IcsSpinner {

  public MyIcsSpinner(Context context, AttributeSet attrs) {
    super(context, attrs, com.actionbarsherlock.R.attr.actionDropDownStyle);

  }

  public MyIcsSpinner(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

  }
}

レイアウトに含めるには:

<com.blah.blah.blah.MyIcsSpinner
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:textAllCaps="true"
    android:background="@drawable/abs__spinner_ab_holo_light"
    android:textColor="#000000"
    android:gravity="center"/>

カスタム を作成するSpinnerAdapter必要があり、次のメソッドをオーバーライドして、適切なルック アンド フィールを取得する必要があります。

@Override
  public View getView(int position, View convertView, ViewGroup parent) {
    final TextView filterName;
    if (convertView == null) {
      filterName = (TextView) layoutInflater.inflate(R.layout.filter_item, parent, false);
    } else {
      filterName = (TextView) convertView;
    }

    filterName.setText(getItem(position));
    return filterName;
  }

  @Override
  public View getDropDownView(int position, View convertView, ViewGroup parent) {
    final TextView filterName;
    if (convertView == null) {
      filterName = (TextView) layoutInflater.inflate(R.layout.sherlock_spinner_dropdown_item, parent, false);
      filterName.setEllipsize(TruncateAt.END);
    } else {
      filterName = (TextView) convertView;
    }

    filterName.setText(getItem(position));
    return filterName;
  }

YMMV、特に。テーマに関して。

于 2012-04-25T21:17:59.917 に答える