西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)Android → Android 編程中文本框中搜索和清空效果實(shí)現(xiàn)

Android 編程中文本框中搜索和清空效果實(shí)現(xiàn)

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:農(nóng)民伯伯時間:2011/4/25 15:18:52字體大。A-A+

作者:農(nóng)民伯伯點(diǎn)擊:444次評論:13次標(biāo)簽: 文本框

  • 類型:商務(wù)模板大。2.1M語言:中文 評分:10.0
  • 標(biāo)簽:
立即下載

 本文實(shí)現(xiàn)的效果:文本框輸入為空時顯示輸入的圖標(biāo);不為空時顯示清空的圖標(biāo),此時點(diǎn)擊清空圖標(biāo)能清空文本框內(nèi)輸入文字。

  正文

  一、實(shí)現(xiàn)效果

    

       

  二、實(shí)現(xiàn)代碼

    監(jiān)聽輸入

    /**
     * 動態(tài)搜索
     */
    private TextWatcher tbxSearch_TextChanged = new TextWatcher() {

        //緩存上一次文本框內(nèi)是否為空
        private boolean isnull = true;

        @Override
        public void afterTextChanged(Editable s) {
            if (TextUtils.isEmpty(s)) {
                if (!isnull) {
                    mSearchView.setCompoundDrawablesWithIntrinsicBounds(null,
                            null, mIconSearchDefault, null);
                    isnull = true;
                }
            } else {
                if (isnull) {
                    mSearchView.setCompoundDrawablesWithIntrinsicBounds(null,
                            null, mIconSearchClear, null);
                    isnull = false;
                }
            }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        /**
         * 隨著文本框內(nèi)容改變動態(tài)改變列表內(nèi)容
         */
        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            
        }
    };

     觸摸事件

    private OnTouchListener txtSearch_OnTouch = new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
            case MotionEvent.ACTION_UP:
                int curX = (int) event.getX();
                if (curX > v.getWidth() - 38
                        && !TextUtils.isEmpty(mSearchView.getText())) {
                    mSearchView.setText("");
                    int cacheInputType = mSearchView.getInputType();// backup  the input type
                    mSearchView.setInputType(InputType.TYPE_NULL);// disable soft input
                    mSearchView.onTouchEvent(event);// call native handler
                    mSearchView.setInputType(cacheInputType);// restore input  type
                    return true;// consume touch even
                }
                break;
            }
            return false;
        }
    };

    綁定事件

    private Drawable mIconSearchDefault; // 搜索文本框默認(rèn)圖標(biāo)
    private Drawable mIconSearchClear; // 搜索文本框清除文本內(nèi)容圖標(biāo)

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main)
        
        final Resources res = getResources();
        mIconSearchDefault = res.getDrawable(R.drawable.txt_search_default);
        mIconSearchClear = res.getDrawable(R.drawable.txt_search_clear);
        
        mSearchView = (EditText) findViewById(R.id.txtSearch);
        mSearchView.addTextChangedListener(tbxSearch_TextChanged);
        mSearchView.setOnTouchListener(txtSearch_OnTouch);
    }

    代碼說明:
      1. 為輸入框綁定觸摸事件(模擬點(diǎn)擊事件捕捉)。通過監(jiān)聽點(diǎn)擊區(qū)域判斷是否點(diǎn)擊清空圖片,如果在該區(qū)域并且文本框不為空,則清空文本框。
      2. 為輸入框綁定文本改變事件監(jiān)聽,根據(jù)內(nèi)容改變動態(tài)設(shè)置圖標(biāo)顯示。
      3. 維持清空操作后軟鍵盤狀態(tài)。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(13)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)