有收索图标的EditText

本文介绍了一种在Android应用中实现搜索框软键盘控制的方法,包括点击搜索图标、完成或搜索按钮时隐藏软键盘,并从服务器获取数据进行相应操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个常用的功能,代码也很简单,不需要什么自定义之类的。那让我来看看先看看xml布局:
这里写图片描述
然后再让我们来看看代码:
public class MainActivity extends Activity {

EditText serchEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    serchEditText= (EditText) findViewById(R.id.edt_search);

    //serchEditText的点击事件
    serchEditTextOclick();
}


private void serchEditTextOclick(){

    //点击软键盘的完成或搜索 关闭软键盘 并从服务器获得数据
    serchEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if(actionId== EditorInfo.IME_ACTION_SEARCH || 
            actionId==EditorInfo.IME_ACTION_GO || 
            actionId==EditorInfo.IME_ACTION_DONE){
            InputMethodManager inputMethodManager= (InputMethodManager) 
            v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                if(inputMethodManager.isActive()){
                  inputMethodManager.
                  hideSoftInputFromWindow(v.getApplicationWindowToken(),0);
                }


                if(!TextUtils.isEmpty(serchEditText.getText())){
                    //做相关操作
                }else {

                }

                return true;
            }
            return false;
        }
    });

    //这是点击搜索 小图标的响应事件
    serchEditText.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_UP) {

              boolean touchable = event.getX() > (v.getWidth() - 
              ((TextView)v).getTotalPaddingRight()-20)
              && (event.getX() < ((v.getWidth() - 
              ((TextView)v).getPaddingRight())));
                if (touchable) {
                    //联网获得数据
                    if(!TextUtils.isEmpty(serchEditText.getText())){
                      //做相关处理
                    }else {

                    }
                    //软件盘消失
                 InputMethodManager inputMethodManager= (InputMethodManager) 
                   v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                    if(inputMethodManager.isActive()){
                        inputMethodManager.toggleSoftInput(0, 
                        InputMethodManager.HIDE_NOT_ALWAYS);
                    }
                }
            }
            return false;
        }
    });

    //监听输入的事件  若输入为空 listview为空
    serchEditText.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 (TextUtils.isEmpty(serchEditText.getText().toString())) {

            }
        }
    });

}

}

demo的链接地址如下:
http://download.youkuaiyun.com/detail/jimtrency/9593038

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值