有没有一种方法可以为Android 2.3.3创建Dropdown Spinner?我正在使用ActionbarSherlock。

这是我的意思的示例:

谢谢

最佳答案

就目前而言,您很幸运。可以使用ActionBarSherlock来完成,并且可以与4.0之前的版本一起使用。但是,我不确定100% jack ·沃顿(Jake Wharton)是否希望我们像这样使用它,因为它并非完全是“公共(public)API”,即AFAIK(我想问)。无论如何,您必须首先创建自己的类以从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,尤其是关于主题。

关于android - 在 Action 栏之外的下拉菜单微调器? (IceCream三明治样式,带有ActionBarSherlock),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10323471/

10-12 01:52