Android - панель поиска стиля

229

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

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

Используя стандартную панель поиска, я получу что-то вроде этого:

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

Так что мне нужно только изменить цвет. Мне не нужны дополнительные стили. Есть ли какой-нибудь прямой подход, чтобы сделать это, или я должен построить свой собственный чертеж?

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

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

Если мне нужно построить пользовательский, то, пожалуйста, предложите, как уменьшить ширину линии прогресса, а также форму.

моя пользовательская реализация:

background_fill.xml:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <gradient
        android:angle="90"
        android:centerColor="#FF555555"
        android:endColor="#FF555555"
        android:startColor="#FF555555" />

    <corners android:radius="1dp" />

    <stroke
        android:width="1dp"
        android:color="#50999999" />
    <stroke
        android:width="1dp"
        android:color="#70555555" />

</shape>

progress_fill.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <gradient
        android:angle="90"
        android:centerColor="#FFB80000"
        android:endColor="#FFFF4400"
        android:startColor="#FF470000" />

    <corners android:radius="1dp" />

    <stroke
        android:width="1dp"
        android:color="#50999999" />
    <stroke
        android:width="1dp"
        android:color="#70555555" />

</shape>

progress.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/background_fill"/>
    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/progress_fill" />
    </item>

</layer-list>

thumb.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >

    <gradient
        android:angle="270"
        android:endColor="#E5492A"
        android:startColor="#E5492A" />

    <size
        android:height="20dp"
        android:width="20dp" />

</shape>

SeekBar:

<SeekBar
        android:id="@+id/seekBarDistance"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="88dp"
        android:progressDrawable="@drawable/progress"
        android:thumb="@drawable/thumb" >
    </SeekBar>
Суреш Чемаламуди
источник
40
Спасибо за показ рабочего примера изменения стиля панели поиска XD. (не много в интернете).
Хелин Ван

Ответы:

297

Я извлек бы drawables и xml из исходного кода Android и изменил бы его цвет на красный. Вот пример того, как я завершил это для рисования mdpi:

Пользовательский red_scrubber_control.xml(добавить в Res / Drawable):

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

    <item android:drawable="@drawable/red_scrubber_control_disabled_holo" android:state_enabled="false"/>
    <item android:drawable="@drawable/red_scrubber_control_pressed_holo" android:state_pressed="true"/>
    <item android:drawable="@drawable/red_scrubber_control_focused_holo" android:state_selected="true"/>
    <item android:drawable="@drawable/red_scrubber_control_normal_holo"/>
</selector>

Таможня: red_scrubber_progress.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/red_scrubber_track_holo_light"/>
    <item android:id="@android:id/secondaryProgress">
        <scale
            android:drawable="@drawable/red_scrubber_secondary_holo"
            android:scaleWidth="100%" />
    </item>
    <item android:id="@android:id/progress">
        <scale
            android:drawable="@drawable/red_scrubber_primary_holo"
            android:scaleWidth="100%" />
    </item>

</layer-list>

Затем скопируйте необходимые отрисовки из исходного кода Android, я взял по этой ссылке

Это хорошо, чтобы скопировать эти drawables для каждого hdpi, mdpi, xhdpi. Например я использую только mdpi:

Затем с помощью Photoshop измените цвет с синего на красный:

red_scrubber_control_disabled_holo.png: red_scrubber_control_disabled_holo

red_scrubber_control_focused_holo.png: red_scrubber_control_focused_holo

red_scrubber_control_normal_holo.png: red_scrubber_control_normal_holo

red_scrubber_control_pressed_holo.png: red_scrubber_control_pressed_holo

red_scrubber_primary_holo.9.png: red_scrubber_primary_holo.9

red_scrubber_secondary_holo.9.png: red_scrubber_secondary_holo.9

red_scrubber_track_holo_light.9.png: red_scrubber_track_holo_light.9

Добавьте SeekBar в макет:

<SeekBar
    android:id="@+id/seekBar1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:progressDrawable="@drawable/red_scrubber_progress"
    android:thumb="@drawable/red_scrubber_control" />

Результат:

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

Андрей
источник
Андрей, спасибо за отличный ответ. У меня проблема с этим. При использовании red_scrubber_controldrawable для большого пальца, я сталкиваюсь с аварией. Если все элементы рисования в селекторе одинаковы, он работает нормально, но если я изменю один из них, я получу Resources$NotFoundException: File .../red_scrubber_control.xml from drawaable resource ID...какие-либо мысли?
Карл
2
Упс. Оказывается, это было связано с stackoverflow.com/questions/6669296/… . Новое изображение, которое я пытался добавить, было случайно 37 МБ вместо 2 КБ ...
Карл
Есть ли способ использовать @dimenразмер большого пальца в зависимости от экрана?
Si8
1
@ SiKni8 Вы можете определить разные размеры для разных размеров экрана, основываясь на параметрах normal, large, xlarge, sw или w для папки значений. Затем просто используйте это измерение в вашем макете, стиле или теме. Проверьте эту ссылку
Андрей
1
Спасибо за ссылку на Android Holo Colours Generator. Это очень полезно.
Деревья
66

Мой ответ вдохновлен Андрасом Балашом Лайта, ответьте, что разрешите работать без файла XML

seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
Фред Дюпон
источник
Цвет диалога прогресса изменился, но цвет превью не изменился .. почему?
Йонатан Нир
7
Если вам не нужно делать это в коде и вы не хотите создавать списки слоев, графические android:progressTint="@color/my_color" android:thumbTint="@color/another_color"
объекты
59

Если вам нужна точно такая же полоса, но красная, вы можете программно добавить цветной фильтр PorterDuff. Вы можете получить каждый рисунок, который хотите раскрасить, с помощью методов базового класса ProgressBar . Затем установите для него цветной фильтр .

mySeekBar.getProgressDrawable().setColorFilter(new PorterDuffColorFilter(srcColor, PorterDuff.Mode.MULTIPLY));

Если нужная регулировка цвета не может быть выполнена с помощью фильтра Портера Даффа, вы можете указать свой собственный цветной фильтр .

Андрас Балаш Лайта
источник
3
не уверен, с какого SDK, проли 21, но если вы хотите, чтобы один и тот же значок просто другого цвета, просто добавьте цвет "colorAccent" в colors.xml и он будет его использовать
тибби
57

Пользовательский стиль материалов для панели поиска Android, для других настроек панели поиска http://www.zoftino.com/android-seekbar-and-custom-seekbar-examples

<style name="MySeekBar" parent="Widget.AppCompat.SeekBar">
    <item name="android:progressBackgroundTint">#f4511e</item>
    <item name="android:progressTint">#388e3c</item>
    <item name="android:colorControlActivated">#c51162</item>
</style>

нестандартный стиль материала seekbar

Арнав Рао
источник
2
Отличное решение для Android> 21
saltandpepper
4
Вы уверены, что colorControlActivatedэто правильный параметр для большого пальца? Так и должно быть thumbTint.
Питер Кнут
Какое решение для ниже API 21?
Фейсал Шейх
42

Просто замените цветную атрибуту своим цветом

background.xml

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

    <stroke android:width="1dp" android:color="#D9D9D9"/>
    <corners android:radius="1dp" />

</shape>

progress.xml

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

    <stroke android:width="1dp" android:color="#2EA5DE"/>
    <corners android:radius="1dp" />

</shape>

style.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/seekbar_background"/>
    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/seekbar_progress" />
    </item>

</layer-list>

thumb.xml

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

    <size android:height="30dp" android:width="30dp"/>
    <stroke android:width="18dp" android:color="#882EA5DE"/>
    <solid android:color="#2EA5DE" />
    <corners android:radius="1dp" />

</shape>
ionutgyn
источник
1
Как я могу использовать файлы в панели поиска?
Mungaih рк
@RahulRastogi как ты использовал эти файлы? Довольно глупо, что этот ответ настолько популярен с 0 объяснениями того, как он работает ...
Селали Адобор
1
@AssortedTrailmix Я сделал это давным-давно. Попробуйте установить такие атрибуты, как: android: thumb = "@ drawable / thumb" и в свойстве android: progressDrawable установите вышеупомянутый файл для рисования списка слоев. Вы можете попробовать: mindfiremobile.wordpress.com/2014/05/20/…
Рахул Растоги
37

Google упростила это в SDK 21. Теперь у нас есть атрибуты для определения цвета оттенка большого пальца:

android:thumbTint
android:thumbTintMode
android:progressTint

http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTint http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTintMode

k2col
источник
7
ПрогрессТинт тоже.
Афоллестад
1
Списки оттенков применяются к каждому элементу пользовательского интерфейса на Android начиная с API 21, это то, как применяется colorAccent.
Афоллестад
16

Все эти ответы устарели.

В 2019 году проще настроить стиль панели поиска в соответствии с предпочтительным цветом, изменив его ProgressBarна этот

<SeekBar
            android:id="@+id/seekBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:progressTint="#36970f"
            android:thumbTint="#36970f"
            />

Стилизовав цвет в строке поиска, попробуйте следующий код

        seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
        seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
Яннис Мпунтуридис
источник
Почему не рекомендуется?
CoolMind
потому что библиотеки изменились
Giannis Mpountouridis
Вы можете увидеть ответ @Ahamadullah Saikat ( stackoverflow.com/a/50074961/2914140 ) или lvguowei.me/post/customize-android-seekbar-color . Они не используют библиотеки и не устанавливают цвета SeekBar даже для старых API.
CoolMind
11

Как упомянуто выше (@andrew), создание собственного SeekBar очень просто с этим сайтом - http://android-holo-colors.com/

Просто включите там SeekBar, выберите цвет, получите все ресурсы и скопируйте в проект. Затем примените их в XML, например:

  android:thumb="@drawable/apptheme_scrubber_control_selector_holo_light"
  android:progressDrawable="@drawable/apptheme_scrubber_progress_horizontal_holo_light"
Антон Кизема
источник
10

вывод:

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

в файле макета:

        <android.support.v7.widget.AppCompatSeekBar
            android:id="@+id/seekBar_bn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:max="25"
            android:minHeight="10dp"
            android:progress="10"
            android:progressDrawable="@drawable/progress"
            android:thumb="@drawable/custom_thumb" />

рисуем / progress.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/background_fill"/>
    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/progress_fill" />
    </item>

</layer-list>

рисуем / background_fill.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="6dp"
        android:left="-6dp"
        android:right="-6dp"
        android:top="6dp">

        <shape android:shape="rectangle">
            <solid android:color="#888888" />
            <stroke
                android:width="5dp"
                android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>

рисуем / progress_fill.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="6dp"
        android:left="-6dp"
        android:right="-6dp"
        android:top="6dp">

        <shape android:shape="rectangle">
            <solid android:color="@color/myPrimaryColor" />
            <stroke
                android:width="5dp"
                android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>

рисуем / custom_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <solid android:color="@color/myPrimaryColor"/>
            <size
                android:width="22dp"
                android:height="22dp"/>
        </shape>
    </item>
</layer-list>

colors.xml

<color name="myPrimaryColor">#660033</color>
Ахамадулла Сайкат
источник
1
не знал AppCompat Seekbar существовал
Пьер
10

Просто установите

android:maxHeight="3dp"
android:minHeight="3dp"

Вот и все

Sunday G Akinsete
источник
9
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:progressTint="@color/red"
android:thumbTint="@color/red" />

Работает как тот же ответ, выбранный. нет необходимости создавать какие-либо файлы для рисования или что-либо еще. (только в 5.0) С уважением

Харун Ахмед
источник
5

По умолчанию Android будет соответствовать цвету вашего слайдера

`<item name="colorAccent">`

значение в вашем styles.xml . Затем, чтобы установить пользовательское изображение большого пальца слайдера, просто используйте этот код в блоке вашего XML-макета SeekBar :

android:thumb="@drawable/slider"
IgorGanapolsky
источник
5
LayerDrawable progressDrawable = (LayerDrawable) mSeekBar.getProgressDrawable();

// progress bar line *progress* color
Drawable processDrawable = progressDrawable.findDrawableByLayerId(android.R.id.progress);

// progress bar line *background* color
Drawable backgroundDrawable = progressDrawable.findDrawableByLayerId(android.R.id.background);

// progress bar line *secondaryProgress* color
Drawable secondaryProgressDrawable = progressDrawable.findDrawableByLayerId(android.R.id.secondaryProgress);
processDrawable.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);

// progress bar line all color
mSeekBar.getProgressDrawable().setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_IN);

// progress circle color
mSeekBar.getThumb().setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN);
Хьюго
источник
4

Для API <21 (и> = 21) вы можете использовать ответ @Ahamadullah Saikat или https://www.lvguowei.me/post/customize-android-seekbar-color/ .

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

<SeekBar
    android:id="@+id/seekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxHeight="3dp"
    android:minHeight="3dp"
    android:progress="50"
    android:progressDrawable="@drawable/seek_bar_ruler"
    android:thumb="@drawable/seek_bar_slider"
    />

рисуем / seek_bar_ruler.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape android:shape="rectangle">
            <solid
                android:color="#94A3B3" />
            <corners android:radius="2dp" />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape android:shape="rectangle">
                <solid
                    android:color="#18244D" />
                <corners android:radius="2dp" />
            </shape>
        </clip>
    </item>
</layer-list>

рисуем / seek_bar_slider.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    >

    <solid android:color="#FFFFFF" />
    <stroke
        android:width="4dp"
        android:color="#18244D"
        />
    <size
        android:width="25dp"
        android:height="25dp"
        />
</shape>
CoolMind
источник
3

Если вы используете SeekBar по умолчанию, предоставляемый Android Sdk, то это простой способ изменить цвет этого. просто зайдите в color.xml внутри /res/values/colors.xml и измените colorAccent.

<resources>
    <color name="colorPrimary">#212121</color>
    <color name="colorPrimaryDark">#1e1d1d</color>
     <!-- change below line -->
    <color name="colorAccent">#FF4081</color>
</resources>
Красная кровь
источник
2

Я меняю background_fill.xml

<?xml version="1.0" encoding="UTF-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line" >
<size android:height="1dp" />
<gradient
    android:angle="0"
    android:centerColor="#616161"
    android:endColor="#616161"
    android:startColor="#616161" />
<corners android:radius="0dp" />
<stroke
    android:width="1dp"
    android:color="#616161" />
<stroke
    android:width="1dp"
    android:color="#616161" />
</shape>

и progress_fill.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line" >
<size android:height="1dp" />
<gradient
    android:angle="0"
    android:centerColor="#fafafa"
    android:endColor="#fafafa"
    android:startColor="#fafafa" />
<corners android:radius="1dp" />
<stroke
    android:width="1dp"
    android:color="#cccccc" />
<stroke
    android:width="1dp"
    android:color="#cccccc" />
 </shape>

сделать фон и 1dpвысоту прогресса .

vrunoa
источник
2

Простой способ изменить цвет панели поиска ...

 <ProgressBar
            android:id="@+id/progress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:theme="@style/Progress_color"/>

Стиль: Прогресс_цвет

 <style name="Progress_color">
    <item name="colorAccent">@color/white</item> <!-- Whatever color you want-->
</style>

изменение класса Java ProgressDrawable ()

seek_bar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.MULTIPLY);
Матан Чинна
источник
1

Если вы посмотрите на ресурсы Android, панель поиска фактически использует изображения.

Вы должны сделать рисование, которое будет прозрачным сверху и снизу, скажем, на 10 пикселей, и будет видна центральная линия 5 пикселей.

Смотрите прикрепленное изображение. Вам нужно конвертировать его в NinePatch.

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

Сагар Вагмар
источник
Можете ли вы предложить несколько сообщений на то же самое?
Суреш Чемаламуди
Одна из хороших ссылок, которую я нашел - mokasocial.com/2011/02/…
Сагар Вагмаре,
Sunday G Решение Akinsete работает, нет необходимости использовать NinePatch
Хелин Ван
0

Для тех, кто использует привязку данных:

  1. Добавьте следующий статический метод в любой класс

    @BindingAdapter("app:thumbTintCompat")
    public static void setThumbTint(SeekBar seekBar, @ColorInt int color) {
        seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
    }
  2. Добавить app:thumbTintCompatатрибут в свой SeekBar

    <SeekBar
           android:id="@+id/seek_bar"
           style="@style/Widget.AppCompat.SeekBar"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           app:thumbTintCompat="@{@android:color/white}"
    />

Вот и все. Теперь вы можете использовать app:thumbTintCompatс любым SeekBar. Оттенок прогресса может быть настроен таким же образом.

Примечание: этот метод также совместим с устройствами перед леденцом на палочке.

Стэн Мотс
источник
0

Небольшая поправка к ответу @ arnav-rao:

чтобы убедиться, что большой палец правильно окрашен, используйте:

<style name="MySeekBar" parent="Widget.AppCompat.SeekBar">
    <item name="android:progressBackgroundTint">@color/colorBgTint</item>
    <item name="android:progressTint">@color/colorProgressTint</item>
    <item name="android:thumbTint">@color/colorThumbTint</item>
</style>

здесь android: thumbTint на самом деле окрашивает «большой палец»

levus.lazarus
источник
0

проверить этот урок очень хорошо

https://www.lvguowei.me/post/customize-android-seekbar-color/

просто :

<SeekBar
                android:id="@+id/seekBar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:max="100"
                android:maxHeight="3dp"
                android:minHeight="3dp"
                android:progressDrawable="@drawable/seekbar_style"
                android:thumbTint="@color/positive_color"/>

затем файл стиля:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@android:id/background">
        <shape android:shape="rectangle" >
            <solid
                android:color="@color/positive_color" />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape android:shape="rectangle" >
                <solid
                    android:color="@color/positive_color" />
            </shape>
        </clip>
    </item>
</layer-list>
Joolah
источник
0

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

<!-- Blue App Theme -->
    <style name="AppTheme.Blue" parent="BaseTheme.Blue">        
        <item name="android:seekBarStyle">@style/SeekbarStyle.Blue</item>
        <item name="seekBarStyle">@style/SeekbarStyle.Blue</item> <!--This is essential for some devices, e.g. Samsung-->
</style>

<!-- Slider Styles -->
<style name="SeekbarStyle.Blue" parent="Widget.AppCompat.SeekBar">
        <item name="android:progressBackgroundTint">@color/material_blue_a700_pct_30</item>
        <item name="android:thumbTint">@color/material_blue_a700</item>
        <item name="android:thumbTintMode">src_in</item>
        <item name="android:progressTint">@color/material_blue_a700</item>
</style>

<style name="SeekbarStyle.Green" parent="Widget.AppCompat.SeekBar">
        <item name="android:progressBackgroundTint">@color/material_green_a700_pct_30</item>
        <item name="android:thumbTint">@color/material_green_a700</item>
        <item name="android:thumbTintMode">src_in</item>
        <item name="android:progressTint">@color/material_green_a700</item>
</style>

Приведенное выше устанавливает стиль панели поиска Theme на синий для всех устройств 21+, включая Samsung (которым требуется применение seekBarStyle в дополнение к android: seekBarStyle; не уверен, почему, но я видел эту проблему воочию). Если вы хотите, чтобы все панели поиска сохраняли стиль темы и применяли зеленый стиль панели поиска только к нескольким виджетам, добавьте следующее к нужному виджету:

<SeekBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.Green"/>
Крис Спраг
источник
0

В библиотеке компонентов материалов версии 1.2.0 вы можете использовать новый Sliderкомпонент.

 <com.google.android.material.slider.Slider
       android:valueFrom="0"
       android:valueTo="300"
       android:value="200"
       android:theme="@style/slider_red"
       />

Вы можете переопределить цвет по умолчанию, используя что-то вроде:

  <style name="slider_red">
    <item name="colorPrimary">#......</item>
  </style>

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

В противном случае вы можете использовать эти атрибуты в макете, чтобы определить цвет или селектор цвета:

   <com.google.android.material.slider.Slider
       app:activeTrackColor="@color/...."
       app:inactiveTrackColor="@color/...."
       app:thumbColor="@color/...."
       />

или вы можете использовать собственный стиль:

 <style name="customSlider" parent="Widget.MaterialComponents.Slider">
    <item name="activeTrackColor">@color/....</item>
    <item name="inactiveTrackColor">@color/....</item>
    <item name="thumbColor">@color/....</item>
  </style>
Габриэле Мариотти
источник
официальные документы заявляют, что все еще запланировано. есть ли другая альтернатива?
tejaspatel
@tejaspatel В ответе есть ссылка на официальный компонент. Первая версия выпущена в версии 1.2.0-alpha01.
Габриэле Мариотти
-1

Вы также можете сделать это так:

<SeekBar
    android:id="@+id/redSeekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:progressDrawable="@color/red"
    android:maxHeight="3dip"/>

Надеюсь, это поможет!

Омар Афлак
источник
1
Я не думаю, что вы можете использовать цвет там, где он ищет рисование
Lancelot