Nano Hash - криптовалюты, майнинг, программирование

Как изменить цвет фона выбора Spinner в Android

введите здесь описание изображения

На изображении выше выбран параметр GAIN 3, но он не виден должным образом, так как я могу изменить этот цвет на более темный. в основном я хочу изменить фон выбранного текста на более темный цвет.

Я использую com.jaredrummler.materialspinner.MaterialSpinner Spinner.

Вот реализация Java.

spinner.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener<String>() {

    @Override public void onItemSelected(MaterialSpinner view, int position, long id, String item) {
        text = spinner.getText().toString();
        Log.e("Spinner Listener",text);

        if(text.contains("GAIN 0")){
            sendToDevice("F");
        } else if(text.contains("GAIN 1")){
            sendToDevice("G");
        } else if(text.contains("GAIN 2")){
            sendToDevice("H");
        } else if(text.contains("GAIN 3")){
            sendToDevice("I");
        }
    }
});

А элемент макета выглядит следующим образом.

<com.jaredrummler.materialspinner.MaterialSpinner
    android:id="@+id/spinner"
    app:ms_dropdown_max_height="350dp"
    app:ms_dropdown_height="wrap_content"
    android:textColorHighlight="#000000"
    android:layout_width="130dp"
    style="@style/spinner_style"
    android:popupTheme="@android:style/ThemeOverlay.Material"
    android:textColor="@color/blue"
    android:layout_below="@+id/testmodetitle"
    android:layout_height="wrap_content"
    android:layout_marginTop="55dp"
    android:layout_alignBaseline="@+id/button1"
    android:layout_alignBottom="@+id/button1"
    android:layout_toEndOf="@+id/button1"
    android:layout_marginStart="30dp" />

  • можете поделиться проверенным кодом. 20.04.2018
  • я поделился своим 20.04.2018
  • Пожалуйста, проверьте мой ответ ниже. 20.04.2018

Ответы:


1

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

<com.jaredrummler.materialspinner.MaterialSpinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:ms_background_selector="@drawable/selector_gray_white_spinner"
        app:ms_dropdown_height="wrap_content"
        app:ms_dropdown_max_height="350dp" />

создать один селектор в drawable с именем selector_gray_white_spinner.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/darkGray"/>
    <item android:state_focused="false" android:state_pressed="true" android:drawable="@color/darkGray"/>
    <item android:state_focused="true" android:drawable="@android:color/white"/>
    <item android:state_focused="false" android:state_pressed="false" android:drawable="@android:color/white"/>

</selector>

Добавьте темный цвет в файл color.xml.

<color name="darkGray">#acacac</color>
20.04.2018
  • эта вещь помогла мне, на самом деле я сделал ошибку, используя компиляцию 'com.jaredrummler:material-spinner:1.1.0' вместо компиляции 'com.jaredrummler:material-spinner:1.2.5' большое спасибо 20.04.2018

  • 2

    Вместе с реализацией этой конкретной библиотеки доступны некоторые атрибуты. Пожалуйста, загляните в раздел readme.md, где перечислены атрибуты.

    введите здесь описание изображения

    Я думаю, вы могли бы рассмотреть возможность использования атрибута ms_background_selector в своем макете, где вы объявили счетчик.

    Таким образом, объявление макета будет выглядеть так.

    <com.jaredrummler.materialspinner.MaterialSpinner
        android:id="@+id/spinner"
        app:ms_background_selector="@drawable/your_darker_selector"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    

    Добавьте файл с именем your_darker_selector.xml и поместите в него следующий код.

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="true" android:drawable="@android:color/darker_gray"/>
        <item android:state_checked="false" android:drawable="@android:color/white" />
    </selector>
    

    Измените цвет из файла селектора в соответствии с вашими потребностями.

    20.04.2018
  • какой код я должен добавить в @drawable/your_darker_selector? 20.04.2018
  • эта вещь помогла мне, на самом деле я сделал ошибку, используя компиляцию 'com.jaredrummler:material-spinner:1.1.0' вместо компиляции 'com.jaredrummler:material-spinner:1.2.5' большое спасибо 20.04.2018

  • 3

    Используйте этот способ, это поможет вам:

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
    android.R.layout.simple_spinner_item, list) {
    
    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent)
    {
       View v = null;
       v = super.getDropDownView(position, null, parent);
       // If this is the selected item position
       if (position == selectedItem) {
           v.setBackgroundColor(Color.BLUE);
       }
       else {
           // for other views
           v.setBackgroundColor(Color.WHITE);
    
       }
       return v;
    }
    };
    
    20.04.2018
  • На самом деле я использую MaterialSpinner. как я могу добавить это в свой код? 20.04.2018

  • 4

    Дайте код цвета html для первого элемента счетчика.

    String styledText = "This is <font color='red'>simple</font>."; textView.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE);

    20.04.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..