ICS 微调器("drop-down"而不是对话框)在较旧的Android版本中



我正在尝试模仿更新的Ice Cream Sandwhich版本的微调器,它看起来更像是一个下拉列表,而不是一个弹出对话框。查看此链接,了解我在说什么。我读到一些帖子说要使用ActionBarSherlock来获得想要的效果。然而,这只是为在操作栏中使用而创建的,那么,我如何从操作栏中取出ICS Spinner?

这里有一个很好的答案,但是,我觉得这有点过头了?有没有更简单的方法?

首先,我引用了这个链接来回答我是否应该回答自己的问题。我觉得这对面临类似问题的人来说非常有用,所以如果这不是这个网站的适当礼仪(回答你自己的问题),我很抱歉。

现在,我跌跌撞撞地试图找到这个问题的解决方案,经过反复尝试,我成功了。因此,一旦您在项目中下载并设置了ActionBarSherlock SDK,就可以创建包含微调器的布局:

<com.actionbarsherlock.internal.widget.IcsSpinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/title"
android:layout_margin="10sp"
android:layout_centerHorizontal="true"
android:textSize="18sp" />

上面的代码将使用ActionBarSherlock库中的微调器的ICS版本。接下来,在"活动"中声明并实例化(使用强制转换)微调器对象。但请注意,您不使用普通的Spinner类,而是使用ActionBarSherlock库中的IcsSpinner类:

IcsSpinner spinner = (IcsSpinner)findViewById(R.id.spinner);

现在,您可以像为普通Spinner创建适配器一样创建适配器,如下所示:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item, elements);
spinner.setAdapter(adapter);

最后,您需要设置onItemSelectedListener。这里唯一的主要区别是使用IcsAdapterView.OnItemSelectedListener而不仅仅是OnItemSelectedListener:

spinner.setOnItemSelectedListener(new IcsAdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(IcsAdapterView<?> parent, View view, int position, long id){
}
@Override
public void onNothingSelected(IcsAdapterView<?> parent){
}
});

就是这样,和使用微调器对象没有太大区别。尽管这很容易,但我花了一段时间才弄清楚,所以,我希望这对某人有用。

哦,是的,别忘了使用ActionBarSherlock主题,就像这样(在清单中):

android:theme="@style/Theme.Sherlock"

最新更新