Android Studio实现搜索栏

前言

一、何为自定义控件?

系统自带的控件都是直接或间接继承自View的,View是Android中最基本的UI组件库。当系统的自带控件无法满足需求时,依据控件的继承结构来制作自定义控件,例如:顶部搜索栏

二、制作步骤

1.引入布局

如果在每一个Activity的布局中都编写一个搜索栏,会导致代码的重复。通过采用引入布局的形式,可以解决这个问题。
首先在layout目录下创建一个select.xml布局,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@drawable/back001">

    <ImageView
        android:id="@+id/select_p01"
        android:layout_marginTop="2dp"
        android:layout_width="46dp"
        android:layout_height="41dp"
        android:src="@drawable/select_photo01" />

    <EditText
        android:id="@+id/select01"
        android:layout_marginTop="6dp"
        android:layout_width="250dp"
        android:layout_height="35dp"
        android:layout_marginLeft="10dp"
         <!--采用edittext_shap01样式-->
        android:background="@drawable/edittext_shape01"/>

    <ImageButton
        android:id="@+id/select_p02"
   <!-- 清除按钮背景-->
        style="?android:attr/borderlessButtonStyle"
        android:layout_marginTop="0dp"
        android:layout_width="53dp"
        android:layout_height="50dp"
   <!-- fitXY 的作用是“保持图片长宽比例”-->
        android:scaleType="fitXY"
        android:src="@drawable/select_photo02" />

</LinearLayout>

2.布局解析

此处对上方的布局进行补充:

1).设置布局背景为back001

android:background="@drawable/back001"

2).导入图片select_photo01

为了使搜索栏不单调,故导入图片装饰

android:src="@drawable/select_photo01"

3.

3.采用edittext_shape01样式

系统自带的EditText仅是一条直线,此处将其变成圆型输入框

android:background="@drawable/edittext_shape01"

变化前:

变化后:

edittext_shape01代码如下:

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

    <solid
        android:color="#FFFFFF" >
    </solid>
    <!-- 设置圆角 -->
    <corners
        android:radius="3dp"
        android:bottomLeftRadius="15dp"
        android:bottomRightRadius="15dp"
        android:topLeftRadius="15dp"
        android:topRightRadius="15dp" >
    </corners>
    <!-- 设置边框 -->
    <stroke android:width="1dip" android:color="#ff000000" />

</shape>

4.导入图片select_photo02装饰

android:scaleType="fitXY"
android:src="@drawable/select_photo02" 

注:fitXY较为重要!

测试

完成布局的编写后,便可以将select01作为自定义控件,进行调用:

<include layout="@layout/select01" />

只需要通过一行include语句,便可以引入搜索栏布局

引入前后对比:

引入前

引入后

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android自定义流式布局实现淘宝搜索记录

    本文实例为大家分享了Android实现淘宝搜索记录的具体代码,供大家参考,具体内容如下 效果如下: 废话不多说 实现代码: attrs.xml <declare-styleable name="TagFlowLayout"> <!--最大选择数量--> <attr name="max_select" format="integer"/> <!--最大可显示行数--> <attr name=&q

  • Android 搜索结果匹配关键字且高亮显示功能

    1. 单关键字 匹配 如果只是单关键字的话,那么我们先计算出他的下标,它的长度,然后就可以标记下标到下标+长度的这一段为特殊颜色即可,代码如下: if (name != null && name.contains(keyWord)) { int index = name.indexOf(keyWord); int len = keyWord.length(); Spanned temp = Html.fromHtml(name.substring(0, index) + "<

  • Android本地实现搜索历史记录

    本文实例为大家分享了Android本地实现搜索历史记录的具体代码,供大家参考,具体内容如下 一.自定义搜索历史记录 本地实现搜索历史记录有很多种方法,下面不多说了,我们来用SQLite来实现此功能,直接上完整代码:点击下载源码 效果一: 效果二: 1.MainActivity主函数 package com.example.administrator.searchapplication; import android.support.v7.app.AppCompatActivity; import

  • Android实现搜索历史功能

    本文实例为大家分享了Android实现搜索历史的具体代码,供大家参考,具体内容如下 SharedPreferences实现本地搜索历史功能,覆盖搜索重复的文本,可清空 1. 判断搜索内容是否含表情,不需要可以不判断 /** * 校验字符串是否含有表情 * @param content * @return */ public static boolean hasEmoji(String content){ Pattern pattern = Pattern.compile("[\ud83c\udc

  • Android搜索结果显示高亮实例(有数据滑动底部自动刷新)

    首先的效果图 搜索到结果(这里我只是模拟数据,真正和服务器走得时候,返回来的数据都应该包含关键字的) 模拟的没有搜索结果的界面 具体实现 在这插一句哈,就是做一件事情,拆分成多个小结,不至于在开发的时候摸不着头脑而且还能把控开发的进度. 思路其实很简单,我们监听输入框的变化,然后在文字变化之后去请求服务器,然后取到我们需要的结果,进行数据展示即可. 第一步:搜索框的监听 et_search.addTextChangedListener(new TextWatcher() { @Override

  • Android实现高亮搜索功能的示例

    目录 首先看效果图: 使用方法: 1.普通场景使用 2.在DataBinding中使用 首先看效果图: 整词高亮: 分词高亮: 下面贴上我封的方法 /** * 关键字高亮显示 * text 原文 * keyWord 需要高亮显示的关键字 * isCut 是否需要做分词高亮展示 * isCut = true 关键字里的每一个字,只要有都会高亮 * isCut = false(默认) 只有整词才会高亮 **/ fun stringToHighLight(text: String, keyWord:

  • android通过拼音搜索中文的功能实现代码

    好几年没写博客了,很多知识不记是真的会忘记,以后还是保持写博客的习惯吧.坚持不一定成功,但放弃一定很舒服!(开玩笑(#^.^#)) 回归正题,今天我要记录的是拼音搜索功能,我记得16年的时候做过这个功能.现在已经忘记很多细节了,所以这次好好写一写! 第一步:准备 第三方包--中文转拼音,pinyin4j-2.5.0.jar,官网http://pinyin4j.sourceforge.net/ Filterable.java 过滤接口 第二步:分析功能并实现 很明显,这是两个功能,一个是中文转拼音

  • Android输入框实时模糊搜索效果的示例代码

    Android输入框实时模糊搜索 很多开发场景会用到搜索框实时模糊搜索来帮助用户输入内容,如图 思路是在EditText 字符变动的时候 弹出ListPopupwindow并更新列表,这样的做法google已经封装为AutoCompleteTextView 用法 mAutoCompleteTextView.setAdapter(adapter); mAutoCompleteTextView.setFocusable(true); mAutoCompleteTextView.setOnItemCl

  • Android Studio3.6.+ 插件搜索不到终极解决方案(图文详解)

    不知道什么时候Android Studio 插件和Gradle升级后,插件在线安装就搜索不到插件了,一直处于转圈圈状态,通过各种测试和摸索总结出几种解决方案.我的Android Studio已经升级到3.6.3. 一.排查他因 排除一些相关因素,这些方法排除后任然无法搜索插件再使用终极解决方案. 1. 网络检查 . 确定无法搜索到插件前,一定要确定网络状态良好,弱网状态下也是会半天搜索不出插件的.不然后面忙了大半天要哭了. 2. 取消代理 二.终极方案 如下列举的几种方法都可有效解决插件搜索不到

  • Android基于RecyclerView实现高亮搜索列表

    话不多说先看今天的实现的效果: 相信这种效果很多项目都会用到,今天就讲讲利用RecycleView来实现他,博主把此篇文章定位初级篇,可能因为这确实很简单,所以我要更要讲的详细一点让新手也可以能看的懂. 饭要开始做了,我们要准备哪些食材呢. 1.一个RecyclerView或是listview或是其他可以显示多item的控件(主要的干货) 2.搞清楚EditText的实时监听 3.让一个textview出现不同的颜色 4.如何穿过Adpter找出textview中key值(也就是高亮字符串) 当

随机推荐