Android 自定义View添加回调
来源:互联网 发布:历史虚无主义表现知乎 编辑:程序博客网 时间:2024/06/01 08:00
Android中回调的应用场景很多,自定义View中监听Edittext输入字符便是其中一种。闲话少叙,直接上代码:
1、自定义View
public class SearchLayout extends FrameLayout { private TextView search_close_btn; private EditText search_text; // 回调接口 private ICallBack mCallBack;// 搜索按键回调接口 public SearchLayout(Context context) { this(context,null); } public SearchLayout(Context context, AttributeSet attrs) { this(context, attrs,0); } public SearchLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); LayoutInflater inflater = LayoutInflater.from(context); View view = inflater.inflate(R.layout.search_view_layout, this); search_close_btn = (TextView) view.findViewById(R.id.search_close_btn); search_close_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { search_text.setText(""); KeybordUtil.closeKeybord(search_text,getContext()); if(search_close_btn.getVisibility()==VISIBLE){ search_close_btn.setVisibility(GONE); } } }); search_text = (EditText) view.findViewById(R.id.search_text); search_text.setImeOptions(EditorInfo.IME_ACTION_SEARCH); search_text.setInputType(EditorInfo.TYPE_CLASS_TEXT); search_text.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId== EditorInfo.IME_ACTION_SEND ||(event!=null&&event.getKeyCode()== KeyEvent.KEYCODE_ENTER)) { ToastUtil.makeText(getContext(),"搜索:"+search_text.getText()); KeybordUtil.closeKeybord(search_text,getContext()); return true; } return false; } }); search_text.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if(!TextUtils.isEmpty(search_text.getText())&&search_close_btn.getVisibility()==GONE){ search_close_btn.setVisibility(VISIBLE); } } @Override public void afterTextChanged(Editable s) { if (!(mCallBack == null)){ mCallBack.SearchAciton(search_text.getText().toString()); } if(TextUtils.isEmpty(search_text.getText())){ search_close_btn.setVisibility(GONE); } } }); } /** * 点击键盘中搜索键后的操作,用于接口回调 */ public void setOnClickSearch(ICallBack mCallBack){ this.mCallBack = mCallBack; } public interface ICallBack { void SearchAciton(String string); }}2、布局中引入自定义View:<com.humorboy.view.SearchLayout android:id="@+id/searchView" android:layout_below="@+id/custom_actionbar" android:layout_width="match_parent" android:layout_height="wrap_content"/>
3、在Activity中监听:searchView = (SearchLayout) findViewById(R.id.searchView);searchView.setOnClickSearch(new SearchLayout.ICallBack() { @Override public void SearchAciton(String string) { ToastUtil.makeText(AutoComeActivity.this,""+string); }});
阅读全文
0 0
- Android 自定义View添加回调
- Android自定义View 属性添加
- android 自定义view添加自定义xml属性
- 【Tech-Android-View】给自定义view添加自定义属性
- 【Tech-Android-View】给自定义view添加自定义属性
- Android添加自定义View的方法
- Android 自定义View并添加属性介绍
- Android的ScrollView中添加自定义View
- Android 自定义View并添加属性
- Android 自定义View并添加属性
- Android 自定义View并添加属性
- Android 自定义View并添加属性
- android AppWidget中添加自定义View
- Android自定义View与添加点击事件
- android 自定义View研究(二) — 自定义控件添加属性
- android自定义View之自定义EditText(添加删除功能)
- Android自定义View之自定义EditText(添加删除功能)
- 为android自定义View控件添加自定义的属性
- npm换源
- arm linux开发环境搭建
- Jupyter Notebook 使用简介
- 单表查询
- 【unique-binary-search-trees】
- Android 自定义View添加回调
- Suggestion: use tools:overrideLibrary="xxx.xxx.xxx" to force usage
- PAT 1098. Insertion or Heap Sort (25) 又掉出题人的语言陷阱里了!!
- Ubuntu 16.04 安装JDK
- QT中QString类的使用
- 一点小感悟
- 前端疲劳
- spring学习笔记十二 泛型注入
- JAVA学习笔记-----线程