当前位置: 首页 > 知识库问答 >
问题:

Android-样式搜索栏

祝英博
2023-03-14

我想设计一个寻找栏,看起来像下图中的那个。

通过使用默认搜索栏,我将得到这样的东西:

所以我只需要改变颜色。我不需要额外的款式。有没有什么直接的方法可以做到这一点,或者我应该建立我的自定义绘图。?

我试图建立自定义的一个,但我不能得到确切的一个如上所示。使用自定义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>

进步与充实。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>

拇指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>

共有3个答案

江宏深
2023-03-14

我的答案是灵感来自安德拉斯Balázs Lajtha回答它允许工作没有xml文件

seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
计胤
2023-03-14

Android seekbar自定义材质样式,用于其他seekbar自定义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:thumbTint">#c51162</item>
</style>

upd:colControlActivated现在是thmbTint

薛承基
2023-03-14

我会从Android源代码中提取绘图和xml,并将其颜色更改为红色。下面是我如何完成mdpi绘图的示例:

自定义红色洗涤器控制。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将颜色从蓝色更改为红色:

将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" />

结果:

 类似资料:
  • 我试图在Android Studio上为我的应用程序自定义搜索栏。我想得到的结果是:我的搜索栏和Quora的搜索栏 我试图遵循G的留档(https://developer.android.com/guide/topics/search/search-dialog.html)没有结果。 这是我的代码: Styles.xml Searchable.xml MainActivity.xml 无法理解为什

  • 应用内搜索 当应用内包含大量信息的时候,用户希望能够通过搜索快速地定位到特定内容。 最基本的搜索包括以下过程: 打开一个搜索文本框 输入查询并提交 显示搜索结果集 然而,可以通过加入一些增强功能来显著提升搜索体验: 启用语音搜索 提供基于用户最近历史查询的搜索建议,即使是在输入查询之前 提供满足应用数据中实际结果的自动完成搜索建议 应用内搜索中有两种主要的模式:持久性搜索(persistent s

  • 本文向大家介绍vim 搜索模式,包括了vim 搜索模式的使用技巧和注意事项,需要的朋友参考一下 示例 在搜索文件时,Vim支持使用正则表达式。 表示您希望执行搜索的字符是/。 您可以执行的最简单的搜索如下 这将在整个文件中搜索的所有实例if。但是,我们的搜索if实际上是一个正则表达式,它将匹配单词的任何出现(if包括其他单词内部的匹配)。 举例来说,我们的搜索会说所有的下列单词匹配我们的搜索:if

  • 问题内容: 我正在使用Elasticsearch 5.2的项目中工作。该代码在Java中,我使用elasticsearch Java Client 5.2。 在这个项目中,我有一个名为hash的字段,它是一个7个字符的代码,其中包含大写字母,小写字母和数字(英语)。我要在此字段上进行两次搜索: 检查是否存在哈希(区分大小写) 查找子字符串s中包含的哈希(例如,子字符串存在于hash中)。 对于哈希

  • 为提高可伸缩性,Sphnix提供了分布式检索能力。分布式检索可以改善查询延迟问题(即缩短查询时间)和提高多服务器、多CPU或多核环境下的吞吐率(即每秒可以完成的查询数)。这对于大量数据(即十亿级的记录数和TB级的文本量)上的搜索应用来说是很关键的。 其关键思想是对数据进行水平分区(HP,Horizontally partition),然后并行处理。 分区不能自动完成,您需要 在不同服务器上设置Sp

  • 我得活动: A-Main Activity(类似于登录屏幕),在进入任何其他Activity时finish() C=其他用户内容 当我进入A>B>C,按home,从launcher启动应用程序时,我看到了C与后堆栈恢复的B>C(顶部),这里没有问题 当我转到A>B>C,按home,启动应用程序从谷歌搜索栏在主屏幕上,我看到A,与背面堆栈B>C>A(顶部)。 问题是为什么会发生这种情况,我该如何修复