微调器带有默认图标+箭头

时间:2013-08-28 20:05:16

标签: android spinner

假设这是Spinner,您如何设置默认图标?

目前,我只是显示第一项(蓝牙)的图标

enter image description here

3 个答案:

答案 0 :(得分:4)

我认为具体的例子是ShareActionProvider,这是ActionProvider

的特殊次级

如果要在菜单的xml中添加ActionProvider,可以将其视为菜单项并添加图标。

来自ActionProvider文档:

<item android:id="@+id/my_menu_item"
 android:title="Title"
 android:icon="@drawable/my_menu_item_icon"
 android:showAsAction="ifRoom"
 android:actionProviderClass="foo.bar.SomeActionProvider" />

由于我还没有使用过这些,所以我不知道所有ActionProvider是否都有旋转角三角形...我的猜测是肯定的吗?

<强> UPADTE:

我只是想着SpinnerAdapter如何运作,还有另一种方法可以做到这一点。如果您在SpinnerAdapter中使用Spinner的自定义子类,它将有2种方法,您可以执行以下操作:

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
    {
    // return the view to display when you are looking at the dropdown,
    // so this will probably be a TextView and/or an ImageView
    }

@Override
public View getView(int position, View convertView, ViewGroup parent)
    {
    // This will show when the item at the provided position is 
    // selected. At this point you could return the ImageView you want to 
    // always appear at the top, such as the share icon.
    }

答案 1 :(得分:0)

今天浪费时间,所以我认为我提供了正确的答案,即使这个帖子似乎已经死了。

首先,我怀疑@Jon确实只是调用神奇的神秘动作提供者会为我们添加微调三角形。它没有。

其次,事实证明谷歌正在作弊并违反他们自己的ActionBar图标指南来实现这一目标。如果您查看http://androiddrawables.com/Menu.html,您会看到共享图标明确地在其角落有一个类似微调的三角形。

基本上,这意味着您的主要假设 - 它是Spinner - 是错误的。它只是一个被黑客攻击的按钮。

因此,您可以根据需要创建自己的自定义图标,只需按照通常的说明指定ActionBar按钮图标(http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems)。如果你有像我一样的文字按钮,那就不会起作用了。

我最终做的是使用支持库中可用的一些微调器背景九个补丁文件,并将属性&#39; actionBarItemBackground&#39;添加到应用于相关按钮的样式中。

<item name="android:actionBarItemBackground" tools:ignore="NewApi">@drawable/abc_spinner_ab_default_holo_light</item>
<item name="actionBarItemBackground">@drawable/abc_spinner_ab_default_holo_light</item>

在尝试此黑客攻击时,您需要牢记ActionBar with AppCompat actionBarItemBackground not working

答案 2 :(得分:-2)

我通过黑客“解决”了这个问题,将ImageView置于Spinner之上。

<Spinner
    android:layout_width="40dp"
    android:layout_height="40dp"
    />

<ImageView
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:scaleType="fitCenter"
    android:src="@drawable/ic_share"
    android:adjustViewBounds="true"
    android:background="@color/same_as_parent_background"
    />