有没有办法为Android 2.3.3创建Dropdown Spinner?我正在使用ActionbarSherlock。
这是我的意思的例子:
由于
答案 0 :(得分:26)
目前,你很幸运。它可以使用ActionBarSherlock完成,它适用于4.0之前的版本。但是,我并不是百分之百确定Jake Wharton会希望我们这样使用它,因为它不完全是“公共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,尤其是关于主题。
答案 1 :(得分:1)
我遇到了同样的问题,我的解决方案非常简单。 (我没有使用HoloEverywhere。)
这个想法来自ABS示例项目,其下拉菜单也可以通过子菜单显示在4.0之前的设备上。所以,我的想法是使用一个子菜单来伪装三点图标。 这是代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu sub = menu.addSubMenu("More");
sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
sub.getItem().setIcon(R.drawable.ic_menu);
getSupportMenuInflater().inflate(R.menu.activity_main, sub);
return true;
}
由于“更多”菜单没有MenuItem.SHOW_AS_ACTION_WITH_TEXT属性,因此操作栏上实际上不会显示单词“更多”(或您指定的任何内容)。唯一显示的图标R.drawable.ic_menu可以从名为“abs__ic_menu_moreoverflow_normal_holo_dark.png”的ABS源代码res / drawable-xxdpi文件夹中复制,这是所谓的3点图标。而R.menu.activity_main是你的菜单xml。
有效!