Android控件EditText软键盘的调用和控制

本文介绍了如何在Android中控制EditText软键盘的显示与隐藏,包括通过InputMethodManager手动调用软键盘以及设置软键盘的响应行为,如在软键盘上点击"回车"时触发相应操作。

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

当我们在Android提供的EditText中单击的时候,会自动的弹出软键盘,其实对于软键盘的调用我们可以通过InputMethodManager这个类来实现。软键盘的调用方式就是两种:一个是像EditText那样当发生onClick事件的时候出现软键盘,还有就是当打开某个程序的时候自动的弹出软键盘。
Android软键盘的一些控制可以通过setOnEditorActionListener这个方法来实现。在EditText输入后,不点击Button进行请求,而是直接点击软键盘上的”回车”,那么也应该能够正常响应请求

public class OrderApproveSearchActivity extends BaseActivity implements OnClickListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_order_approve_search_list);
        private EditText searchEdit;
        searchEdit = (EditText)findViewById(R.id.search_edit);
        //requestFocus:获取焦点
        searchEdit.requestFocus();
        //setOnEditorActionListener这个方法,在我们编辑完之后点击软键盘上的回车键才会触发
        searchEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId,
                    KeyEvent event) {
                //输入法Enter键图标的设置:actionSend 发送,对应常量EditorInfo.IME_ACTION_SEND
                if (actionId == EditorInfo.IME_ACTION_SEND
                        || (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER))
                {
                    //频繁点击软键盘“搜索”键不响应
                    if(lastSearchTime != null){
                        long temp = System.currentTimeMillis() - lastSearchTime;
                        if(temp < 1000){
                            return true;
                        }
                    }
                    lastSearchTime = System.currentTimeMillis();
                    //业务逻辑
                    if(StringUtil.isEmpty(keywords)){
                        Toast.makeText(OrderApproveSearchActivity.this, "请输入关键字搜索", Toast.LENGTH_SHORT).show();
                    }else{
                        refresh(null);
                    }
                    return true;
                }
                return false;
            }
        });
}
    @Override
    protected void onResume() {
        super.onResume();
        searchEdit.setFocusable(true);
        searchEdit.setFocusableInTouchMode(true);
        searchEdit.requestFocus();
        /** 
         * 用一个定时器控制当打开这个Activity的时候就出现软键盘 
         */  
        Timer timer = new Timer();
        //延迟0.2s执行显示软键盘,原因是Android程序未将屏幕绘制完成
        timer.schedule(new TimerTask() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                InputMethodManager inputManager = (InputMethodManager) searchEdit.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                inputManager.showSoftInput(searchEdit, 0);
            }
        }, 200);
    }
    /** 
     * 当单击事件的时候触发显示软键盘 
     */  
    @Override  
    public void onClick(View v) {  
        InputMethodManager inputManager = (InputMethodManager) searchEdit.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.showSoftInput(searchEdit, 0);
    }  

}

参考:
Android软键盘学习InputMethodManager
Android EditText的设置
Android软键盘的一些控制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值