これが であると仮定するとSpinner
、デフォルトのアイコンをどのように設定しますか?
現在、私のものは最初のアイテム(bluetooth)のアイコンを表示するだけです
特定の例は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
私はこれらを使用していないので、すべての s にスピナー コーナー トライアングルがあるかどうかを知るには十分ではありません...私の推測ではイエスですか?
アップデート:
どのように機能するかを考えてSpinnerAdapter
いましたが、これを行う別の方法があります。のカスタム サブクラスを使用している場合は、SpinnerAdapter
2Spinner
つのメソッドがあり、次のことができます。
@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.
}
今日は時間を無駄にしたので、このスレッドは死んでいるように見えますが、正しい答えを提供すると思いました。
まず、@Jon が行ったように、魔法のような神秘的な ActionProvider を呼び出すだけで、スピナーの三角形が追加されるのではないかと疑っていました。そうではありません。
2 つ目は、Google がこれを実現するために、独自の ActionBar アイコン ガイドラインをごまかし、違反していることが判明したことです。http://androiddrawables.com/Menu.htmlを見ると、共有アイコンの隅にスピナーのような三角形がハッキングされていることがわかります。
本質的に、これはあなたの主要な仮定 - それが a であるSpinner
- が間違っていることを意味します。スピナーのように見えるようにハッキングされたボタンです。
そのため、必要に応じて独自のカスタム アイコンを作成できます。通常の手順に従って、ActionBar ボタン アイコンを指定します ( http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems )。私のようにテキストボタンがある場合、それは機能しません。
私が最終的に行ったことは、サポート ライブラリで利用可能ないくつかのスピナー バックグラウンド ナイン パッチ ファイルと、問題のボタンに適用されるスタイルに追加された属性「actionBarItemBackground」を利用することでした。
<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>
このハックを試みるときは、AppCompat actionBarItemBackground を使用した ActionBar が機能しないことに注意してください。
私はこの問題をハックで「解決」し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"
/>