如何在Android中使用EditText实现批量搜索关键词?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
当用户在EditText中输入内容,点击搜索按钮的时候,输入的内容能够高亮,然后添加到输入的容器中。删除的时候,能够将容器中的关键词逐一删除。附上代码:
SearchEditText.java
package com.jackie.searchresultedittext; import android.content.Context; import android.graphics.Color; import android.util.AttributeSet; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; public class SearchEditText extends RelativeLayout { private Context mContext; private LayoutInflater mInflater; private View mView; private LinearLayout mContainer; private EditText mEditText = null; public SearchEditText(Context context) { this(context, null); } public SearchEditText(Context context, AttributeSet attrs) { this(context, attrs, 0); } public SearchEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context); } private OnSearchChangeListener mSearchChangeListener; public interface OnSearchChangeListener { void searchChange(String s); void removeView(int position); } public void setOnSearchChangeListener(OnSearchChangeListener searchChangeListener) { mSearchChangeListener = searchChangeListener; } private void init(Context context) { mContext = context; mInflater = LayoutInflater.from(mContext); mView = mInflater.inflate(R.layout.search_edittext_layout, null); LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); params.leftMargin = 15; params.rightMargin = 15; addView(mView, params); mContainer = (LinearLayout) mView.findViewById(R.id.layout); mEditText = (EditText) mView.findViewById(R.id.edittext); mEditText.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DEL) { if (isNotFastClick()) { if (mEditText.getText().toString().length() > 0) { String str = mEditText.getText().toString(); str = str.substring(0, str.length() - 1); mEditText.setText(str); mEditText.setSelection(str.length()); } else { if (mContainer.getChildCount() > 0) { if (mSearchChangeListener != null) { mSearchChangeListener.removeView(mContainer.getChildCount() - 1); } mContainer.removeViewAt(mContainer.getChildCount() - 1); } } } } return true; } }); mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEARCH) { if (mEditText.getText().toString().trim().equals("")) { return true; } TextView textView = new TextView(mContext); textView.setText(mEditText.getText().toString().trim()); textView.setTextSize(14); textView.setTextColor(Color.parseColor("#dfe0e0")); textView.setPadding(10, 0, 10, 0); textView.setBackgroundResource(R.drawable.shape_edittext_round_bg); textView.setGravity(Gravity.CENTER); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); params.leftMargin = 10; textView.setLayoutParams(params); if (mSearchChangeListener != null) { mSearchChangeListener.searchChange(mEditText.getText().toString().trim()); } mEditText.setText(""); mContainer.addView(textView); } return true; } }); } public EditText getEditText() { return mEditText; } public LinearLayout getContainer() { return mContainer; } long lastClickTime = 0; public boolean isNotFastClick() { long time = System.currentTimeMillis(); if (time - lastClickTime >= 300) { lastClickTime = time; return true; } else { return false; } } }
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1142
183.71 KB下载数642
644.84 KB下载数2755
相关文章
发现更多好内容猜你喜欢
AI推送时光机如何在Android中使用EditText实现批量搜索关键词
后端开发2023-05-31
Android EditText实现关键词批量搜索示例
后端开发2022-06-06
如何使用批处理实现百度关键字搜索
后端开发2023-06-09
如何在PHP项目中实现搜索功能和关键词匹配?
后端开发2023-11-03
如何使用批处理打开网页实现百度关键字搜索
后端开发2023-06-09
Go 语言中的文件操作:如何使用函数关键字来搜索关键词?
后端开发2023-10-23
如何在PHP中使用ElasticSearch实现搜索
后端开发2023-06-05
如何在ASP中使用关键字索引来提高搜索精度?
后端开发2023-09-26
如何使用GO语言实现实时响应关键字搜索?
后端开发2023-06-22
如何在分布式 PHP API 中利用关键字实现精准搜索?
后端开发2023-10-04
如何在PHP中使用关键字数组进行快速搜索?
后端开发2023-08-02
如何在Android中使用TextView实现词组高亮
后端开发2023-05-30
Java教程:如何在文件中使用关键字提高搜索效率?
后端开发2023-05-30
如何在Java应用程序中使用关键字搜索Linux日志文件?
后端开发2023-08-11
如何在Android应用中实现一个动态searchview搜索栏效果
后端开发2023-05-31
如何在 ASP 中使用 JavaScript 数组实现实时搜索和过滤?
后端开发2023-07-22
如何使用JavaScript在PHP中实现关键字重定向?
后端开发2023-10-19
如何在PHP中使用JavaScript实现关键字重定向?
后端开发2023-10-19
如何在Unix系统中使用Python关键字实现高效响应?
后端开发2023-07-04
如何使用Vue3实现文章内容中多个"关键词"标记高亮显示
后端开发2022-11-16
咦!没有更多了?去看看其它编程学习网 内容吧