在Android开发中,搜索框是很常用的,但是控件中没有现成的,需要自己封装。那要怎么封装呢?
方式一:使用XML和JAVA代码相结合的方式。在XML中定义搜索的相关控件及布局,JAVA代码中进行相应事件的控制。
方式二:对于浮动搜索框,可以使用SearchRecentSuggestionsProvider和searchable来实现。
方式三:全部使用JAVA代码实现。
前面两种,网上的代码已经很多,这里使用方式三来实现。先来看看效果图。
功能:
(1)、搜索框中有提示。
(2)、输入内容后,提示自动清除,显示输入的内容,并在右边显示清空的图标。
(3)、点击搜索按钮后,将搜索结果输出。
依据这些功能,我们可以作如下分解。
(1)、输入框、清空图标、搜索按钮在同一水平线上,所以可以需要使用LinearLayout的水平布局来实现。
(2)、输入框可以使用EditText实现。
(3)、输入框的提示内容使用EditText的hint实现。
(4)、清空图标可以在EditText中绘制一个靠右的图标,并设定一定的感应区,以响应清空操作。
(5)、搜索按钮使用Button添加图片实现,同时添加点击事件的响应。
(6)、为了确保按钮外的空间被输入框占满,需要使用比重layout_weight=1来设置。
通过分解,大致可以理出需要用到的控件和相应的逻辑,下面是实现的代码。
SearchWidget.java
package com.example.searchframetest;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.text