3

これが であると仮定するとSpinner、デフォルトのアイコンをどのように設定しますか?

現在、私のものは最初のアイテム(bluetooth)のアイコンを表示するだけです

ここに画像の説明を入力

4

3 に答える 3

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私はこれらを使用していないので、すべての s にスピナー コーナー トライアングルがあるかどうかを知るには十分ではありません...私の推測ではイエスですか?

アップデート:

どのように機能するかを考えてSpinnerAdapterいましたが、これを行う別の方法があります。のカスタム サブクラスを使用している場合は、SpinnerAdapter2Spinnerつのメソッドがあり、次のことができます。

@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.
    }
于 2013-08-28T20:17:50.410 に答える
0

今日は時間を無駄にしたので、このスレッドは死んでいるように見えますが、正しい答えを提供すると思いました。

まず、@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 が機能しないことに注意してください。

于 2014-09-26T21:20:11.760 に答える
-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"
    />
于 2013-08-28T20:39:09.203 に答える