我想设计一个看起来像下图中的搜索条 .
通过使用默认搜索条,我将得到这样的东西:
所以我需要的是只改变颜色 . 我不需要额外的款式 . 是否有任何直接的方法来做这个或我应该 Build 我的自定义drawable . ?
我尝试构建自定义的一个,但我无法得到如上所示的确切的一个 . 使用自定义drawable后,我得到的如下所示:
如果我需要构建自定义的那个,那么请建议如何减少进度线的宽度以及形状 .
我的自定义实现:
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>
progess_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
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>
22 回答
我将从Android源代码中提取drawables和xml并将其颜色更改为红色 . 以下是我为mdpi drawables完成此操作的示例:
自定义
red_scrubber_control.xml
(添加到res / drawable):自定义:
red_scrubber_progress.xml
然后从Android源代码中复制所需的drawables,我拿了from this link
最好为每个hdpi,mdpi,xhdpi复制这些drawable . 例如,我只使用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添加到布局:
结果:
如果您想要完全相同的条形但是红色,则可以以编程方式添加PorterDuff颜色过滤器 . 您可以通过ProgressBar基类的方法获取要着色的每个可绘制对象 . 然后为它设置color filter .
如果无法通过Porter Duff过滤器进行所需的颜色调整,则可以specify your own color filter .
我的答案来自AndrasBalázsLajtha的答案,它允许在没有xml文件的情况下工作
我改了
background_fill.xml
和
progress_fill.xml
使背景和进度
1dp
高度 .只需用颜色替换颜色分布即可
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
Android搜索栏自定义材质样式,用于其他搜索栏自定义http://www.zoftino.com/android-seekbar-and-custom-seekbar-examples
如上所述(@andrew),使用此站点创建自定义SeekBar非常简单 - http://android-holo-colors.com/
只需在那里启用SeekBar,选择颜色,并接收所有资源并复制到项目 . 然后将它们应用于xml中,例如:
刚设置
就这样
与所选答案相同 . 无需制作任何可绘制的文件或其他 . (仅限IN 5.0)问候
默认情况下,android会将滑块的进度颜色与之匹配
styles.xml 中的值 . 然后,要设置自定义滑块拇指图像,只需在 SeekBar xml布局的块中使用此代码:
如果您使用的是Android Sdk提供的默认SeekBar,那么它们是一种改变颜色的简单方法 . 只需转到/res/values/colors.xml里面的color.xml并更改colorAccent .
输出:
在布局文件中:
绘制/ progress.xml
绘制/ background_fill.xml
绘制/ progress_fill.xml
绘制/ custom_thumb.xml
colors.xml
简单的方法来改变搜索栏颜色......
风格:Progress_color
java类更改ProgressDrawable()
所有这些答案都已弃用 .
在2019年,通过将
ProgressBar
更改为此,可以更轻松地将搜索栏设置为您喜欢的颜色以编程方式设置搜索条颜色样式,请尝试以下代码
如果您查看Android资源,搜索栏实际上会使用图像 .
您必须制作一个可在顶部和底部透明的可绘制,例如10px,并且可以看到中心的5px线 .
参考附图 . 您需要将其转换为NinePatch .
对于那些使用数据绑定:
app:thumbTintCompat
属性添加到SeekBar而已 . 现在你可以使用
app:thumbTintCompat
与任何SeekBar
. 可以以相同的方式配置进度色调 .Note: 此方法也适用于预棒棒糖设备 .
@ arnav-rao对答案的小修正:
要确保拇指正确着色,请使用:
android:thumbTint实际上为“拇指”着色
检查本教程非常好
https://www.lvguowei.me/post/customize-android-seekbar-color/
简单:
然后是一个样式文件:
我想为搜索栏创建一个样式,然后将样式添加到主题中,这样我就可以将它应用于整个主题,同时仍允许子类覆盖它 . 这是我做的:
以上为包括三星在内的所有设备21设置了主题搜索栏样式为蓝色(除了android:seekBarStyle之外还需要seekBarStyle;不确定为什么,但我亲眼看到了这个问题) . 如果您希望所有搜索栏保留主题样式并仅将绿色搜索栏样式应用于几个小部件,则将以下内容添加到您想要的小部件中:
你也可以这样做:
希望它会有所帮助!