Неправильный фон Spinner на Android 6.0+ - PullRequest
0 голосов
/ 05 сентября 2018

Я использую проект Android (старый проект) на Eclipse.

Я устанавливаю ADT отсюда:

https://dl-ssl.google.com/android/eclipse/

В моем manifest.xml

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

фрагмент макета XML:

  <Spinner
        android:id="@+id/currencySpinner"
        style="@style/racommon_spinner_custom_style"
        android:layout_width="0dip"
        android:layout_height="40dip"
        android:layout_weight="0.3"
        android:prompt="@string/currency" />

здесь styles.xml

  <style name="racommon_spinner_custom_style" parent="@android:style/Widget.Holo.Light.Spinner">
    <item name="android:background">@drawable/racommon_spinner_custom_bg</item>
    <item name="android:clickable">true</item>
</style>

Здесь можно нарисовать racommon_spinner_custom_bg :

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/spinner_selected_custom_border"/>

    <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/spinner_pressed_custom"/>

    <item android:drawable="@drawable/spinner_default_custom" />
</selector>

здесь res\drawable-mdpi\spinner_pressed_custom.9.png

enter image description here

Вот результат на Android 4.3 enter image description here

и вот результат на Android 6.0+ enter image description here

Здесь при нажатии на счетчик: enter image description here

Как видите, фон спиннера отличается от Android 4.0. На андроиде 4.0. является правильным фоном прядильщика. Но в андроиде 6.0+ не правильно.

Вот результат генератора из девяти каналов enter image description here

Почему?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Поскольку вы не устанавливаете градиентный фон программно, проблема заключается только в стиле, используемом в устаревшей теме: Widget.Holo.Light.Spinner.

Просто замените его актуальной темой, например Widget.AppCompat.Light.Spinner.

Также вы можете попробовать просто обновить targetSdkVersion и использовать более новую версию SDK, если это вариант для вас.

Некоторые уточнения: Фактическая причина разрушения градиентов в новых версиях Android - новое требование указывать значения в dp, см. Градиент Android на Lollipop не работает. - API 21

0 голосов
/ 05 сентября 2018

enter image description here Я думаю, что это проблема dpi, поэтому я бы посоветовал вам сделать 9 патчей в соответствии с dpi

перейти по ссылке ниже

Нажмите здесь

и перетащите ваше текущее изображение патча сюда, оно сгенерирует изображения в соответствии с dpi.

...