package com.metis.base.widget; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import android.widget.ImageView; import android.widget.RelativeLayout; import com.metis.base.R; /** * Created by Beak on 2015/8/19. */ public class SearchView extends RelativeLayout { private EditText mSearchInput = null; private ImageView mSearchCloseBtn = null; private OnSearchListener mSearchListener = null; public SearchView(Context context) { this(context, null); } public SearchView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public SearchView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initThis(context); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public SearchView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); initThis(context); } private void initThis (Context context) { LayoutInflater.from(context).inflate(R.layout.layout_search_view, this); mSearchInput = (EditText)findViewById(R.id.search_input); mSearchCloseBtn = (ImageView)findViewById(R.id.search_close_btn); mSearchCloseBtn.setOnClickListener(mClickListener); mSearchInput.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_UP) { if (keyCode == KeyEvent.KEYCODE_ENTER) { if (mSearchListener != null) { mSearchListener.onSearchHappened(mSearchInput.getText().toString()); } } } return false; } }); mSearchInput.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) { } @Override public void afterTextChanged(Editable s) { if (s.length() == 0) { if (mSearchListener != null) { mSearchListener.onSearchClear(); } } } }); mSearchInput.requestFocus(); } private OnClickListener mClickListener = new OnClickListener() { @Override public void onClick(View v) { final int id = v.getId(); if (id == mSearchCloseBtn.getId()) { mSearchInput.setText(""); mSearchInput.requestFocus(); if (mSearchListener != null) { mSearchListener.onSearchClear(); } } } }; public void requestInputFocus () { mSearchInput.requestFocus(); } public void setOnSearchListener (OnSearchListener listener) { mSearchListener = listener; } public interface OnSearchListener { public void onSearchHappened (String content); public void onSearchClear (); } }