Android自定义搜索界面,搜索词单独设置颜色
来源:互联网 发布:网络骂人犯法吗? 编辑:程序博客网 时间:2024/04/28 12:26
一、概述
一般的app有可能会涉及到搜索,现在的搜索的需求都是边输入边搜索的,然后下面会有之前的搜索历史,以及搜索词在搜索结果中的颜色是另外的颜色,例如蓝色红色等,还有一个需求就是改变回车按键,然后可以触发点击事件。
二、将要实现的效果图
三、涉及到的知识点
1、把回车键变为搜索按钮,代码添加点击事件,进行搜索
2、添加流式标签布局,并且添加点击事件
3、通过监听,实现一边输入一边搜索效果
4、搜索结果中搜索词颜色设为指定的另外的颜色
三、实现过程(解决问题代码)
1、更改软键盘回车为搜索按钮,给EditText添加这两个属性:
android:imeOptions="actionSearch" android:singleLine="true"2、代码里实现点击事件
et_text.setOnEditorActionListener(this);@Overridepublic boolean onEditorAction(TextView v, int actionId, KeyEvent event){//此处写想要实现的搜索功能代码return false;}3、解决流式布局,可以通过github比较好的流式布局demo,很简单用一下就好,搜FlowLayout,肯定可以搜索
/** * 给Flowlayout添加数据,并且设置点击事件 */private void addDataToflowlayout(){String beforeWords = SharedPreferencesUtils.getString(context,"searchConfig", "");if (!"".equals(beforeWords)){String[] searchWords = beforeWords.split(",");for (String string : searchWords){TextView rb = (TextView) View.inflate(this, R.layout.rb, null);rb.setText(string);MarginLayoutParams layoutParams = new MarginLayoutParams(MarginLayoutParams.WRAP_CONTENT,MarginLayoutParams.WRAP_CONTENT);layoutParams.setMargins(10, 15, 30, 0);flowLayout.addView(rb, layoutParams);}// 设置点击事件for (int i = 0; i < flowLayout.getChildCount(); i++){TextView tView = (TextView) flowLayout.getChildAt(i);final String strText = tView.getText().toString();tView.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){et_text.setText(strText);}});}} else{ll.setVisibility(View.GONE);}}3、添加EditText内容变化监听:
//给Editext添加文字变化监听et_text.addTextChangedListener(this);//让Activity实现TextWatcher,重写相应的方法@Overridepublic void afterTextChanged(Editable s){// TODO Auto-generated method stub}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after){}@SuppressWarnings("unchecked")@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count){//这里的s就是用户输入的词,你可以根据s值,进行相应的搜索等操作。}4、给相应的搜索词设置另外的颜色。
//自定义Adapter,在getView方法添加颜色更改代码@Overridepublic View getView(int position, View convertView, ViewGroup parent){// TODO Auto-generated method stubViewHolder holder = null;if (convertView == null){convertView = View.inflate(context,R.layout.query_college_textview2, null);holder = new ViewHolder();holder.iv = (ImageView) convertView.findViewById(R.id.id_iv);holder.tv_course_title = (TextView) convertView.findViewById(R.id.id_text);convertView.setTag(holder);} else{holder = (ViewHolder) convertView.getTag();}//以下代码是改变搜索词的颜色的方法String searchWords = et_text.getText().toString().trim();int chageTextColor;ForegroundColorSpan redSpan = new ForegroundColorSpan(Color.BLUE);SpannableStringBuilder builder = new SpannableStringBuilder(videoNames.get(position));chageTextColor = videoNames.get(position).indexOf(searchWords);if (chageTextColor != -1){builder.setSpan(redSpan, chageTextColor, chageTextColor+ searchWords.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);holder.tv_course_title.setText(builder);} elseholder.tv_course_title.setText(videoNames.get(position));return convertView;}
四、总结
这是很常见的一个功能,大家有兴趣可以看看,有什么问题,请在评论中问哦
0 0
- Android自定义搜索界面,搜索词单独设置颜色
- 自定义lable 每个单词可以单独设置颜色、字体、字号
- 【android】TextView 自定义颜色设置
- CTreeCtrl单独节点颜色设置
- Android 状态栏透明、自定义状态栏颜色设置
- Android给Activity状态栏设置自定义颜色
- JTable 单独设置某一行颜色
- BCG网格控件单独设置颜色
- select2搜索内容显示搜索词
- eclipse界面颜色设置
- 设置Eclipse界面颜色
- 设置Eclipse界面颜色
- 设置Eclipse界面颜色
- iOS开发设置单独界面无横屏
- Android调用系统自定义设置界面
- Android Studio主题设置(界面背景,字体颜色等)
- android 搜索自动匹配关键字并设置器颜色
- Android开发仿360设置自定义控件设置界面按钮
- Swift学习笔记(二十九)——函数的使用1
- 紫金桥组态软件与西门子S7-200的以太网联接
- Swift第三课 分支语句 if else for forin switch while do-while
- AngularJS使用 ng-options 实现传值给后台controller
- flex画图demo
- Android自定义搜索界面,搜索词单独设置颜色
- js前端页面常用字段验证(持续更新)
- POI读取Excel浅谈
- OGG实现两台Oracle数据库的同步
- 轻松自动化---selenium-webdriver(python) (十一)
- Javabean的useBean,setProperty,getProperty动作元素-学习笔记
- SVN使用教程总结
- block 传值 1
- 安装MySQL之后修改编码方式