package com.itbox.grzl.widget; import android.content.Context; import android.util.AttributeSet; import android.view.Gravity; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.TextView; import butterknife.ButterKnife; import butterknife.InjectView; import butterknife.OnClick; import butterknife.OnFocusChange; import com.zhaoliewang.grzl.R; /** * 搜索条 * * @author baoboy * @date 2014-5-24下午10:36:59 */ public class SearchBar extends FrameLayout { @InjectView(R.id.et_input) protected EditText mInputEt; @InjectView(R.id.tv_search) protected TextView mSearchTv; private boolean isInput; private OnSearchListener onSearchListener; private OnClickListener clickListener; public SearchBar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initView(); } public SearchBar(Context context, AttributeSet attrs) { super(context, attrs); initView(); } public SearchBar(Context context) { super(context); initView(); } private void initView() { View.inflate(getContext(), R.layout.view_search_bar, this); ButterKnife.inject(this); mInputEt.setFocusable(false); } @Override public void setOnClickListener(OnClickListener l) { super.setOnClickListener(l); clickListener = l; } @OnClick(R.id.et_input) public void onEditClick(View v){ if (clickListener != null) { performClick(); return; } } @OnClick(R.id.tv_search) public void onClick(View v) { if (clickListener != null) { performClick(); return; } if (isInput) { // 开始搜索 if (onSearchListener != null) { onSearchListener.onSearch(mInputEt.getText().toString()); } } else { // 进入搜索模式 mInputEt.setFocusable(true); mInputEt.setFocusableInTouchMode(true); mInputEt.requestFocus(); showKeyboard(mInputEt); // 搜索图片放到右侧 LayoutParams params = (LayoutParams) mSearchTv.getLayoutParams(); params.gravity = Gravity.RIGHT; mSearchTv.setLayoutParams(params); isInput = true; } } /** * 隐藏软键盘 */ public void hiddenKeyboard(View view) { InputMethodManager imm = (InputMethodManager) getContext() .getSystemService(Context.INPUT_METHOD_SERVICE); if (imm.isActive(view)) { // imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); // 强制隐藏键盘 // view.clearFocus(); } } /** * 显示软键盘 */ public void showKeyboard(View view) { InputMethodManager imm = (InputMethodManager) getContext() .getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(view, InputMethodManager.HIDE_NOT_ALWAYS); // imm.restartInput(view); // imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); } public void setOnSearchListener(OnSearchListener onSearchListener) { this.onSearchListener = onSearchListener; } public static interface OnSearchListener { public void onSearch(String keyword); } }