Подтвердить что ты не робот

Стиль android spinner

Я пытаюсь сделать свое приложение для Android более стильным и добился определенного прогресса, но выпадающее меню с прядильщиками дает мне проблемы. У меня есть скриншот, чтобы показать вам проблему:

How do I get rid of the white background

Я хочу, чтобы белый ящик в фоновом режиме был прозрачным, как в том же сером наложении поверх заднего экрана, что и остальная часть экрана вне раскрывающегося списка.

Android 4.0, API 15, если я правильно помню.

Как здесь задано, как я это делаю до сих пор. Это фрагменты, которые, я думаю, актуальны, но я мог что-то пропустить.

Здесь xml для spinner:

<Spinner
    android:id="@+id/edit_countrySpinner"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:entries="@array/edit_countryArray"
    android:gravity="center"
    android:prompt="@string/country_prompt" />

В моих значениях /style.xml. Если изменить цвет фона здесь, фон в диалоговом окне изменится, но и все остальные фоны. Я не знаю, как изменить фокус в раскрывающемся диалоговом окне.

<style name="appcin" parent="@android:style/Theme.NoTitleBar.Fullscreen">
    <item name="android:spinnerStyle">@style/spinnerStyle</item>
    <item name="android:spinnerItemStyle">@style/SpinnerItem</item>
    <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item> -->
    <item name="android:background">#FFFFFF</item>
</style>
<style name="spinnerStyle">
    <item name="android:background">@drawable/pink_white_dropdown</item>
    <item name="android:clickable">true</item>
</style>
<style name="SpinnerItem">
    <item name="android:textColor">#993399</item>
    <item name="android:background">@drawable/pink_white_dropdown</item>
    <item name="android:maxHeight">10dip</item>
</style>
<style name="SpinnerDropDownItem">
    <item name="android:textColor">#993399</item>
    <item name="android:background">#FFFFFF</item>
</style>

Я попытался добавить это в тему приложения, но ни один из них не имел никакого значения, фон был все еще белым.

<...theme....>
   <item name="android:dropDownListViewStyle">@style/DropDownStyle</item>
   <item name="android:dropDownSpinnerStyle">@style/DropDownStyle</item>
   <item name="android:dropDownSelector">@style/DropDownStyle</item>
</... theme ...>
<style name="DropDownStyle">
    <item name="android:background">#FFF000</item>
    <item name="android:popupBackground">#FFF000</item>
    <item name="android:cacheColorHint">#FFF000</item>
</style>

В drawable/pink_white_dropdown, просто показывая одно и то же изображение для всех случаев. pink_white_arrow - это 9-кратное изображение, которое я сделал. Существует множество руководств, здесь, которые я нашел по 30 секунд в Google.

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_window_focused="false" android:state_enabled="true"
      android:drawable="@drawable/pink_white_arrow"/>
  <item android:state_window_focused="false" android:state_enabled="false"
      android:drawable="@drawable/pink_white_arrow"/>
  <item android:state_pressed="true" 
      android:drawable="@drawable/pink_white_arrow"/>
  <item android:state_pressed="false" 
      android:drawable="@drawable/pink_white_arrow"/>
  <item android:state_focused="true" android:state_enabled="true" 
      android:drawable="@drawable/pink_white_arrow"/>
  <item android:state_enabled="true" 
      android:drawable="@drawable/pink_white_arrow"/>
  <item android:state_focused="true" 
      android:drawable="@drawable/pink_white_arrow"/>
  <item 
      android:drawable="@drawable/pink_white_arrow"/>
</selector>

Где-то в этих файлах я полагаю, что что-то должно быть прозрачным, но я не знаю, где.

4b9b3361

Ответ 1

Удалите фоновый атрибут SpinnerStyle.

Снимите это:

<style name="spinnerStyle">
    <item name="android:background">@drawable/whitish_rectangle</item>
</style>

который рисует фоновый белый прямоугольник.

Основываясь на коде в вашем вопросе, вот базовый пример того, как вы можете создать свой Spinner:

Файл styles.xml устанавливает стили для SpinnerItem и SpinnerDropDownItem:

<resources>
    <style name="customtheme" parent="@android:style/Theme.Light">
        <item name="android:spinnerItemStyle">@style/SpinnerItem</item>
        <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item>
    </style>
    <style name="SpinnerItem">
        <item name="android:textColor">#993399</item>
        <item name="android:background">@drawable/my_rectangle</item>
    </style>
    <style name="SpinnerDropDownItem">
        <item name="android:textColor">#993399</item>
        <item name="android:background">@drawable/my_rectangle</item>
    </style>
</resources>

Для тестирования я создал яркую вытягиваемую форму, называемую my_rectangle.xml. Замените его собственными возможностями:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#ff0000" />
    <stroke
        android:width="1dp"
        android:color="#888888" />
</shape>

Добавьте Spinner в макет Activity's:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:padding="40dip">
    <Spinner
        android:id="@+id/edit_countrySpinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/location_names"/>
</LinearLayout>

Это дает:

enter image description here

без белого квадрата в фоновом режиме.

Ответ 2

добавить

<item name="android:popupBackground">@null</item>

в ваш стиль spinner.

Ответ 3

У меня была такая же проблема, и код ниже работал у меня:

<item name="android:popupBackground">@null</item> 

Ответ 4

стиль Android Spinner

Spinner Widget требует двух различных пользовательских макетов, один для отображения, а другой для выпадающего списка!

В этом примере блога на Custom Spinner Android мы расскажем, как создать собственный спиннер в Android-студии, который будет иметь:

  1. Индивидуальный фон для выбранного элемента
  2. Цвет текста выбранного элемента
  3. Цвет текста для выпадающего
  4. Фон для выпадающего списка
  5. Spinner Animation

Ссылка здесь: https://androiddvlpr.com/custom-spinner-android/