假设这是Spinner
,您如何设置默认图标?
目前,我只是显示第一项(蓝牙)的图标
答案 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"
/>