Я хотел оформить панель поиска, которая выглядит так, как показано на рисунке ниже.
Используя стандартную панель поиска, я получу что-то вроде этого:
Так что мне нужно только изменить цвет. Мне не нужны дополнительные стили. Есть ли какой-нибудь прямой подход, чтобы сделать это, или я должен построить свой собственный чертеж?
Я попытался создать пользовательский, но не смог получить точный, как показано выше. После использования настраиваемого рисования, я получаю, как показано ниже:
Если мне нужно построить пользовательский, то, пожалуйста, предложите, как уменьшить ширину линии прогресса, а также форму.
моя пользовательская реализация:
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>
android
android-seekbar
custom-selectors
android-slider
Суреш Чемаламуди
источник
источник
Ответы:
Я извлек бы drawables и xml из исходного кода Android и изменил бы его цвет на красный. Вот пример того, как я завершил это для рисования mdpi:
Пользовательский
red_scrubber_control.xml
(добавить в Res / Drawable):Таможня:
red_scrubber_progress.xml
Затем скопируйте необходимые отрисовки из исходного кода Android, я взял по этой ссылке
Это хорошо, чтобы скопировать эти drawables для каждого hdpi, mdpi, xhdpi. Например я использую только mdpi:
Затем с помощью Photoshop измените цвет с синего на красный:
red_scrubber_control_disabled_holo.png:
red_scrubber_control_focused_holo.png:
red_scrubber_control_normal_holo.png:
red_scrubber_control_pressed_holo.png:
red_scrubber_primary_holo.9.png:
red_scrubber_secondary_holo.9.png:
red_scrubber_track_holo_light.9.png:
Добавьте SeekBar в макет:
Результат:
источник
red_scrubber_control
drawable для большого пальца, я сталкиваюсь с аварией. Если все элементы рисования в селекторе одинаковы, он работает нормально, но если я изменю один из них, я получуResources$NotFoundException: File .../red_scrubber_control.xml from drawaable resource ID...
какие-либо мысли?@dimen
размер большого пальца в зависимости от экрана?Мой ответ вдохновлен Андрасом Балашом Лайта, ответьте, что разрешите работать без файла XML
источник
android:progressTint="@color/my_color" android:thumbTint="@color/another_color"
Если вам нужна точно такая же полоса, но красная, вы можете программно добавить цветной фильтр PorterDuff. Вы можете получить каждый рисунок, который хотите раскрасить, с помощью методов базового класса ProgressBar . Затем установите для него цветной фильтр .
Если нужная регулировка цвета не может быть выполнена с помощью фильтра Портера Даффа, вы можете указать свой собственный цветной фильтр .
источник
Пользовательский стиль материалов для панели поиска Android, для других настроек панели поиска http://www.zoftino.com/android-seekbar-and-custom-seekbar-examples
источник
colorControlActivated
это правильный параметр для большого пальца? Так и должно бытьthumbTint
.Просто замените цветную атрибуту своим цветом
background.xml
progress.xml
style.xml
thumb.xml
источник
Google упростила это в SDK 21. Теперь у нас есть атрибуты для определения цвета оттенка большого пальца:
http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTint http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTintMode
источник
Все эти ответы устарели.
В 2019 году проще настроить стиль панели поиска в соответствии с предпочтительным цветом, изменив его
ProgressBar
на этотСтилизовав цвет в строке поиска, попробуйте следующий код
источник
Как упомянуто выше (@andrew), создание собственного SeekBar очень просто с этим сайтом - http://android-holo-colors.com/
Просто включите там SeekBar, выберите цвет, получите все ресурсы и скопируйте в проект. Затем примените их в XML, например:
источник
вывод:
в файле макета:
рисуем / progress.xml
рисуем / background_fill.xml
рисуем / progress_fill.xml
рисуем / custom_thumb.xml
colors.xml
источник
Просто установите
Вот и все
источник
Работает как тот же ответ, выбранный. нет необходимости создавать какие-либо файлы для рисования или что-либо еще. (только в 5.0) С уважением
источник
По умолчанию Android будет соответствовать цвету вашего слайдера
значение в вашем styles.xml . Затем, чтобы установить пользовательское изображение большого пальца слайдера, просто используйте этот код в блоке вашего XML-макета SeekBar :
источник
источник
Для API <21 (и> = 21) вы можете использовать ответ @Ahamadullah Saikat или https://www.lvguowei.me/post/customize-android-seekbar-color/ .
рисуем / seek_bar_ruler.xml:
рисуем / seek_bar_slider.xml:
источник
Если вы используете SeekBar по умолчанию, предоставляемый Android Sdk, то это простой способ изменить цвет этого. просто зайдите в color.xml внутри /res/values/colors.xml и измените colorAccent.
источник
Я меняю
background_fill.xml
и
progress_fill.xml
сделать фон и
1dp
высоту прогресса .источник
Простой способ изменить цвет панели поиска ...
Стиль: Прогресс_цвет
изменение класса Java ProgressDrawable ()
источник
Если вы посмотрите на ресурсы Android, панель поиска фактически использует изображения.
Вы должны сделать рисование, которое будет прозрачным сверху и снизу, скажем, на 10 пикселей, и будет видна центральная линия 5 пикселей.
Смотрите прикрепленное изображение. Вам нужно конвертировать его в NinePatch.
источник
Для тех, кто использует привязку данных:
Добавьте следующий статический метод в любой класс
Добавить
app:thumbTintCompat
атрибут в свой SeekBarВот и все. Теперь вы можете использовать
app:thumbTintCompat
с любымSeekBar
. Оттенок прогресса может быть настроен таким же образом.Примечание: этот метод также совместим с устройствами перед леденцом на палочке.
источник
Небольшая поправка к ответу @ arnav-rao:
чтобы убедиться, что большой палец правильно окрашен, используйте:
здесь android: thumbTint на самом деле окрашивает «большой палец»
источник
проверить этот урок очень хорошо
https://www.lvguowei.me/post/customize-android-seekbar-color/
просто :
затем файл стиля:
источник
Я хотел создать стиль для панели поиска, а затем добавить стиль к теме, чтобы можно было применить его ко всей теме, при этом позволяя подстилю переопределять его. Вот что я сделал:
Приведенное выше устанавливает стиль панели поиска Theme на синий для всех устройств 21+, включая Samsung (которым требуется применение seekBarStyle в дополнение к android: seekBarStyle; не уверен, почему, но я видел эту проблему воочию). Если вы хотите, чтобы все панели поиска сохраняли стиль темы и применяли зеленый стиль панели поиска только к нескольким виджетам, добавьте следующее к нужному виджету:
источник
В библиотеке компонентов материалов версии 1.2.0 вы можете использовать новый
Slider
компонент.Вы можете переопределить цвет по умолчанию, используя что-то вроде:
В противном случае вы можете использовать эти атрибуты в макете, чтобы определить цвет или селектор цвета:
или вы можете использовать собственный стиль:
источник
Вы также можете сделать это так:
Надеюсь, это поможет!
источник