13

スピナーを使用していて、スピナーを追加したい-動作を変更するには、状態(フォーカス、プレス)によって異なります

サンプルプロジェクトはこちらhttps://github.com/vovs/spinner_issue

私のコード:

activity_main.xml

<Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:spinnerMode="dropdown"
        android:dropDownSelector="@drawable/spinner_state" />

spinner_state.xml

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

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_enabled="false"
        android:drawable="@color/black" />
    <item
        android:state_pressed="true"
        android:state_enabled="true"
        android:drawable="@color/red" />
    <item
        android:state_focused="true"
        android:state_enabled="true"
        android:drawable="@color/red" />
    <item
        android:state_enabled="true"
        android:drawable="@color/gray" />
</selector>

AndroidManifest:

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

したがって、エミュレーターAndroid 4.0.2 API 14でアプリを実行し、マウスのホイールを使用してアイテムを選択またはスクロールしようとしても効果がない場合は、セレクターで設定します(押すかスクロールすると、アイテムは赤になりますが、青-ICSカラーのデフォルト)。

Android 2.2 API 8の場合、ホイールを使用して押すかスクロールすると(この場合は状態がフォーカスされます)、色は黄色[オレンジ](Android 2.2のデフォルトの色)です。

スピナーのセレクターを有効にする方法は?

ここに画像の説明を入力してください

4

3 に答える 3

9

また、公式のバグ... https://code.google.com/p/android/issues/detail?id=24922

何が役立つか:

<resources>
    <style name="Theme.MyTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:dropDownListViewStyle">@style/Theme.MyListView</item>
    </style>

    <style name="Theme.MyListView" parent="@android:style/Widget.Holo.Light.ListView">
        <item name="android:listSelector">@drawable/orange_list</item>
    </style>
</resources>

幸運を!

于 2013-10-26T13:43:48.760 に答える
3
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:drawable="@color/lighter_gray_no_transparent" />
    <item android:state_selected="true" android:drawable="@color/lighter_gray_no_transparent" />
    <item android:state_pressed="true" android:drawable="@color/lighter_gray_no_transparent" />
    <item android:drawable="@android:color/transparent"/>
</selector>

<color name="lighter_gray_no_transparent">#FFDDDDDD</color>

アイテムビューのバックグラウンドセレクターを設定します。これですべてです。私のために働いてください。カラーアルファ値はFFである必要があります。そうでない場合、背景はオレンジ色になります。左側の1つの色の値は#FFDDDDDD、右側の値は#55DDDDDDです。

ここに画像の説明を入力してください ここに画像の説明を入力してください

于 2014-12-03T03:43:24.707 に答える
1

他の方法もあるかもしれませんが、ジェネレーターの1つを使用することで私が理解できることは次のとおりです。

res/values/styles.xmlドローアブルを指す際に、スピナーの独自のスタイルを宣言します。

<style name="myCustomSpinner" parent="android:Widget.Holo.Light.Spinner">
    <item name="android:background">@drawable/spinner_state</item>
</style>

res/values/themes.xml現在のテーマを継承する独自のテーマを作成して宣言します。このテーマ内で、変更する属性ごとにアイテムを追加し、最後の手順でカスタムスタイルを指定します。必要に応じてこれをスタイルファイルに入れることもできると思いますが、ジェネレーターがそれらを分離するので、私はそれに倣います。

<style name="myCustomTheme" parent="android:Theme.Light">
    <item name="android:dropDownSpinnerStyle">@style/myCustomSpinner</item>
</style>

で、開始タグAndroidManifestに追加します。android:theme="@style/myCustomTheme"application

の値はparent、プロジェクトの設定方法によって異なります。これにより、プロジェクトのスピナーのスタイルが1つだけではなく、スタイルになると思います。試してみて、何が得られるか教えてください。

于 2013-08-12T17:25:37.307 に答える