web-dev-qa-db-ja.com

Androidスピナーポップアップのスタイルを設定する方法は?

設定しました

<item name="Android:spinnerMode">dialog</item>

スピナーをタップすると、ポップアップが表示されます。しかし、そのポップアップは灰色で白いテキストがあり、色を変更することができません。このダイアログのスタイルを設定するにはどうすればよいですか?

私はいくつかのクレイジーな一時的な色で以下を試し、何が変化するが何も変化しないことを確認しました。

<style name="AppTheme" parent="AppBaseTheme">
    <item name="Android:dialogTheme">@style/SpinnerDialog</item>
    <item name="Android:alertDialogTheme">@style/SpinnerAlertDialog</item>
</style>

<style name="SpinnerDialog" parent="Theme.AppCompat.Light.Dialog">
    <item name="Android:popupBackground">#ff00ff</item>
    <item name="colorPrimary">#ff00ff</item>
    <item name="colorPrimaryDark">#ffff00</item>
    <item name="colorAccent">#ff0000</item>
</style>

<style name="SpinnerAlertDialog" parent="Theme.AppCompat.Dialog">
    <item name="colorPrimary">#00ffff</item>
    <item name="colorPrimaryDark">#00ff00</item>
    <item name="colorAccent">#0000ff</item>
</style>

同様の質問がたくさんありますが、それらはすべて、ドロップダウンまたはAndroidの古いバージョンを処理するか、機能しません。

7
TimSim

ダイアログのポップアップ背景色を変更するために、themeまたはstyle.xmlを使用する代わりに。

これを試してみませんか?レイアウトxml

 <Spinner
    Android:id="@+id/spinner1"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:spinnerMode="dialog"
    Android:popupBackground="#yourcolor"/>

あなたはテーマを追加しようとしたので、それは何も変更しません。これは簡単に達成できます。

お役に立てれば!!!

9
PN10

カスタムレイアウトを使用してこれを実現できます。

Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
        R.id.custom_spinner_item, yourItemList);
adapter.setDropDownViewResource(R.layout.custom_spinner_dropdown_item);
spinner.setAdapter(adapter);

カスタムレイアウトを用意する必要があります。

  • R.id.custom_spinner_itemスピナー内のアイテム。
  • R.layout.custom_spinner_dropdown_itemスピナードロップダウン項目。
4
Abhishek Jain

ダイアログの背景を変更し、カスタムパディングを追加したかったので、ここにスタイルを示します。

 <style name="customSpinnerDialog" >

        <item name="Android:background">@Android:color/white</item>
        <item name="Android:textColor">@color/color_accent</item>
        <item name="Android:padding">0dp</item>

 </style>

レイアウトxmlでスピナーに適用するには:

<Android.support.v7.widget.AppCompatSpinner
                Android:id="@+id/reason_spinner"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:drawSelectorOnTop="true"
                Android:theme="@style/customSpinnerDialog"
                Android:spinnerMode="dialog"
                style="@style/SpinnerTheme"
                 />

お役に立てれば。

1
JimmyFlash

好きな色が入った「背景」アイテムでテーマを作成するだけです。

<style name="Spinner.PopUpTheme">
    <item name="Android:background">@color/black</item>
</style>

次に、そのテーマをスピナーの「popupTheme」属性に設定します。

<Spinner
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:spinnerMode="dialog"
    Android:popupTheme="Spinner.PopUpTheme"
</Spinner>
0
Vlad Bakalo