java - ICS Spinner ("drop-down"而不是对话框)在旧的 Android 版本中

标签 java android view spinner actionbarsherlock

我正在尝试模仿较新的 Ice Cream Sandwhich 版本的微调器,它看起来更像是一个下拉列表而不是弹出对话框。 See this link了解我在说什么。我读了一些帖子说使用 ActionBarSherlock 来获得预期的效果。但是,创建它仅供在操作栏中使用,因此,如何将 ICS Spinner 从操作栏中取出?

There is a pretty good answer here,但是,我觉得这有点矫枉过正?有没有更简单的方法?

最佳答案

首先,我引用了 this link我是否应该回答我自己的问题。我觉得这对面临类似问题的人非常有用,所以如果这不是本网站的适当礼仪(回答您自己的问题),我深表歉意。

现在,我偶然发现了这个问题的解决方案,经过反复试验,我成功了。因此,一旦您下载了 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 版本。接下来,在您的 Activity 中声明并实例化(使用强制转换)微调器对象。但请注意,您不使用普通的 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 主题,就像这样(在 list 中):

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

关于java - ICS Spinner ("drop-down"而不是对话框)在旧的 Android 版本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13810289/

相关文章:

android - 无法识别的选项 : --illegal-access=permit when running cordova build android

android - 如何将按钮添加到 "extends View"类?

java - 界面设计问题: Storing Result of Transactions

java - 类似于Java中C#的Process.Close事件?

java - 对于所有相同的号码,电话号码验证应该失败

android - 如何优化自定义 View ?

java - 在另一个类中声明 View 元素(上下文不清楚)

java - 使用 JPQL 通过 UCanAccess 驱动程序查询 MS-Access 数据库

Android 这个(上下文)给出 NullPointerException

android - 以编程方式设置 TextView 的布局权重