web-dev-qa-db-ja.com

AndroidでSpinnerドロップダウンの色を変更する簡単な方法はありますか?

enter image description here

アプリで使用するテーマを作成しました。テーマの親はTheme.AppCompat.Light.NoActionBar

ちなみに、背景は白、テキストは黒が欲しいです。

そしてこれはアダプタコードです

     val adapter = ArrayAdapter.createFromResource(activity,
                R.array.email_type_array, Android.R.layout.simple_spinner_item)

     adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item)
     child.spinner.adapter = adapter

AndroidでSpinnerドロップダウンの色を変更する簡単な方法はありますか?

はい。 xml内でスピナーから次の属性を使用できます

Android:popupBackground="YOUR_HEX_COLOR_CODE"

textcolorなどを変更するにはスピナーアイテムのカスタムXMLファイルを作成します。

spin_item.xml:

次に、希望の色とサイズを指定します。

<?xml version="1.0" encoding="utf-8"?>

<TextView  
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent" 
    Android:layout_height="wrap_content"
    Android:textSize="24sp"
    Android:textColor="#000000"         
    Android:padding="4dp"
    />

そして、次のように使用します。

val adapter = ArrayAdapter.createFromResource(activity,
                R.array.email_type_array, Android.R.layout.simple_spinner_item)
adapter.setDropDownViewResource(R.layout.spin_item)
8

次のような新しいレイアウトファイルを作成します

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@Android:id/text1"
    style="?android:attr/spinnerDropDownItemStyle"
    Android:singleLine="true"
    Android:layout_width="match_parent"
    Android:layout_height="?android:attr/dropdownListPreferredItemHeight"
    Android:ellipsize="Marquee"
    Android:background="MY REQUIRED COLOR"/>

私がMY REQUIRED COLORと言う場所で、あなたが望む色にそれを設定してください。

また、Android:id属性は変更しないでください。これは、arrayadapterがこれを使用してテキストをtextviewに設定するためです。

次に、作成中にそれをアレイアダプターに設定します。

val adapter = ArrayAdapter.createFromResource(activity,
                R.array.email_type_array, .R.layout.custom_ simple_spinner_item)
1
Bhargav

ドロップダウンの背景色を変更するには、SpinnerウィジェットのxmlファイルでAndroid:popupBackground="@color/aColor"を使用します。

<Spinner
    Android:id="@+id/my_spinner"
    Android:layout_width="100dp"
    Android:layout_height="match_parent"
    Android:popupBackground="@color/aColor" />

styles.xmlfileで明るいテーマで遊ぶ場合、スピナードロップダウンアイコンの色は黒になりますが、<item name="Android:textColorSecondary">@color/aColor</item>を使用している場合は、ドロップダウンアイコンがその色を選択することに注意してください。

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="Android:textColorSecondary">@color/aColor</item>

あなたの質問でさえドロップダウンの背景色私がここに来たのは、私のスピナードロップダウンアイコンの色がそれを発見するまで別の色であった理由を理解しようとしていたからです( Android:textColorSecondary)-それが他の誰かにも役立つことを願っています。

1
Filipe Brito

コードを介して

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.getBackground().setColorFilter(getResources().getColor(R.color.red), PorterDuff.Mode.SRC_ATOP);

またはXMLを介して

API 21以降の場合:

<Spinner
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:backgroundTint="@color/red" />

または、サポートライブラリを使用する場合は、次を使用できます。

<Android.support.v7.widget.AppCompatSpinner
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    app:backgroundTint="@color/red" />

ここで答えを確認してください

1
Sushin PS

コードで、onCreate()に以下を追加します。

 Spinner spinner = (Spinner) findViewById(R.id.spinner);
 spinner.getBackground().setColorFilter(getResources().getColor(R.color.red), 
 PorterDuff.Mode.SRC_ATOP);
1
mehul chauhan

location_Survey_Spin = findViewById(R.id.location_Survey_Spinner); location_Survey_Spin.getBackground()。setColorFilter(getResources()。getColor(R.color.black)、PorterDuff.Mode.SRC_ATOP); //スピナーのドロップダウンの色を変更します

0
Kishore Reddy