Eu queria criar uma barra de busca parecida com a da imagem abaixo.
Ao usar a barra de pesquisa padrão, vou obter algo assim:
Então, o que eu preciso é mudar apenas a cor. Não preciso de estilos extras. Existe alguma abordagem direta para fazer isso ou devo criar meu drawable personalizado.?
Tentei criar um personalizado, mas não consegui o exato, como mostrado acima. Depois de usar o drawable personalizado, o que recebo é como mostrado abaixo:
Se eu precisar criar o personalizado, sugira como reduzir a largura da linha de progresso e também a forma.
minha implementação personalizada:
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
suresh cheemalamudi
fonte
fonte
Respostas:
Gostaria de extrair drawables e xml do código-fonte do Android e mudar sua cor para vermelho. Aqui está um exemplo de como eu completei isso para mdpi drawables:
Personalizado
red_scrubber_control.xml
(adicionar a res / drawable):Personalizadas:
red_scrubber_progress.xml
Em seguida, copie os drawables necessários do código-fonte do Android, tirei deste link
É bom copiar esses desenhos para cada hdpi, mdpi, xhdpi. Por exemplo, eu uso apenas mdpi:
Em seguida, usando o Photoshop, altere a cor de azul para vermelho:
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:
Adicione o SeekBar ao layout:
Resultado:
fonte
red_scrubber_control
drawable para o polegar, encontro um acidente. Se todos os drawables no seletor forem iguais, funcionará bem, mas se eu mudar um deles, recebo umaResources$NotFoundException: File .../red_scrubber_control.xml from drawaable resource ID...
mensagem.@dimen
para definir o tamanho do polegar com base na tela?Minha resposta é inspirada em Andras Balázs Lajtha, que permite trabalhar sem arquivo xml
fonte
android:progressTint="@color/my_color" android:thumbTint="@color/another_color"
Se você quiser exatamente a mesma barra, mas em vermelho, poderá adicionar um filtro de cores PorterDuff programaticamente. Você pode obter cada desenho que deseja colorir através dos métodos da classe base ProgressBar . Em seguida, defina um filtro de cores para ele.
Se o ajuste de cores desejado não puder ser feito através de um filtro Porter Duff, você poderá especificar seu próprio filtro de cores .
fonte
Estilo de material personalizado da barra de busca do Android, para outras personalizações da barra de busca http://www.zoftino.com/android-seekbar-and-custom-seekbar-examples
fonte
colorControlActivated
é o parâmetro certo para o polegar? Deveria serthumbTint
.Apenas substitua os atributos de cor pela sua cor
background.xml
progress.xml
style.xml
thumb.xml
fonte
O Google facilitou isso no SDK 21. Agora, temos atributos para especificar as cores de tonalidade do polegar:
http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTint http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTintMode
fonte
Todas essas respostas estão obsoletas.
Em 2019, é mais fácil estilizar sua barra de busca com a cor preferida, alterando-a
ProgressBar
para estaComo estilizar sua cor da barra de pesquisa, programaticamente, tente o seguinte código
fonte
Como mencionado acima (@andrew), a criação de SeekBar personalizado é super fácil com este site - http://android-holo-colors.com/
Basta ativar o SeekBar lá, escolher a cor, receber todos os recursos e copiar para o projeto. Em seguida, aplique-os no xml, por exemplo:
fonte
resultado:
no arquivo de layout:
drawable / progress.xml
drawable / background_fill.xml
drawable / progress_fill.xml
drawable / custom_thumb.xml
colors.xml
fonte
Basta definir
Isso é tudo
fonte
funciona da mesma forma que a resposta selecionada. não é necessário criar nenhum arquivo extraível. (apenas no IN 5.0)
fonte
Por padrão, o Android corresponderá à cor do progresso do seu controle deslizante para
valor em seu styles.xml . Em seguida, para definir uma imagem miniatura personalizada do controle deslizante, use este código no bloco do layout XML do SeekBar :
fonte
fonte
Para APIs <21 (e> = 21), você pode usar a resposta de @Ahamadullah Saikat ou https://www.lvguowei.me/post/customize-android-seekbar-color/ .
drawable / seek_bar_ruler.xml:
drawable / seek_bar_slider.xml:
fonte
Se você estiver usando o SeekBar padrão fornecido pelo Android Sdk, então é uma maneira simples de mudar a cor disso. basta ir para color.xml em /res/values/colors.xml e alterar o colorAccent.
fonte
Eu mudo o
background_fill.xml
e a
progress_fill.xml
para fazer a
1dp
altura de fundo e progresso .fonte
Maneira simples de mudar a cor da barra de busca ...
Estilo: Progress_color
mudança de classe java ProgressDrawable ()
fonte
Se você olhar para os recursos do Android, a barra de busca realmente usa imagens.
Você precisa criar um desenho que seja transparente na parte superior e inferior, por exemplo, 10px e a linha central de 5px seja visível.
Consulte a imagem em anexo. Você precisa convertê-lo em um NinePatch.
fonte
Para quem usa vinculação de dados:
Adicione o seguinte método estático a qualquer classe
Adicionar
app:thumbTintCompat
atributo ao seu SeekBarÉ isso aí. Agora você pode usar
app:thumbTintCompat
com qualquerSeekBar
. O tom de progresso pode ser configurado da mesma maneira.Nota: este método também é compatível com dispositivos pré-pirulito.
fonte
Pequena correção para a resposta de @ arnav-rao:
para garantir que o polegar esteja colorido corretamente, use:
aqui android: thumbTint realmente cores o "polegar"
fonte
verifique este tutorial muito bom
https://www.lvguowei.me/post/customize-android-seekbar-color/
simples:
então um arquivo de estilo:
fonte
Eu queria criar um estilo para a barra de busca e, em seguida, adicionar o estilo a um tema para que ele pudesse ser aplicado a um tema inteiro, enquanto permitia que um subestilo o substituísse. Aqui está o que eu fiz:
A descrição acima define o estilo da barra de busca do tema como azul para todos os dispositivos com mais de 21 anos, incluindo Samsung (que precisam do seekBarStyle aplicado além do android: seekBarStyle; não sei por que, mas vi esse problema em primeira mão). Se você deseja que todas as barras de busca mantenham o estilo do tema e aplique apenas o estilo verde da barra de busca a alguns widgets, adicione o seguinte ao widget desejado:
fonte
Com a Biblioteca de componentes de materiais versão 1.2.0, você pode usar o novo
Slider
componente.Você pode substituir a cor padrão usando algo como:
Caso contrário, você pode usar estes atributos no layout para definir uma cor ou um seletor de cores:
ou você pode usar um estilo personalizado:
fonte
Você também pode fazer desta maneira:
Espero que ajude!
fonte