[Android 소스 해석] 사용자 정의 지울 수 있는 입력 상자

2238 단어 androidEditText
오늘 여러분께 Edittext에 관한 이야기를 들려드리겠습니다. 전에 한 번 눌러서 지울 수 있는 입력 상자를 사용했는데 아이디어를 생각해 봤습니다. 입력 상자 옆에 작은 지울 그림을 놓고 Edittext와 지울 수 있는 작은 그림을 레이아웃에 넣고 레이아웃에 배경 그림을 주면 보기 좋을 것 같습니다. 그리고 Edittext에 따라.getText().length에서 작은 그림을 볼 수 있는지 설정하는 것도 괜찮을 것 같습니다.하지만 많이 보면 그럴 수도 있지만 정말 물이 많아서 지울 수 있는 Edittext를 사용자 정의로 만들려고 합니다.
다음은 자신의 생각을 말해 봅시다.
1. 우선 사용자 정의 구성 요소 계승edittext
2. 구조 방법을 다시 쓰고 명확한 단추의 작은 아이콘을 초기화하고 위치를 설정합니다
3. 편집 텍스트의 초점 변화를 감청하고 초점 변화에 따라 작은 아이콘을 숨깁니다
4. 작은 아이콘을 다시 쓰는 단추로 이벤트를 클릭
부분 코드를 부착하려면 다음과 같이 하십시오.
 /**
     *         edittext     ,           :
     *            (      -     -         ) (      -        )  
     *                   ,     
     * by Hankkin  at:2015 8 11  16:45:42
     * @param event
     * @return
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (getCompoundDrawables()[2]!=null){
            if (event.getAction() == MotionEvent.ACTION_UP){
                boolean touchable = event.getX()>(getWidth()-getPaddingRight()-deleteDraw.getIntrinsicWidth())&&
                        (event.getX() < ((getWidth() - getPaddingRight())));
                if (touchable){
                    setText("");
                }

            }
        }
        return super.onTouchEvent(event);
    }
/**
     *           
     * by Hankkin at:2015 8 11  16:17:24
     * @param isVisible
     */
    private void setDeleteVisible(boolean isVisible){
        Drawable drawable = isVisible?deleteDraw:null;
        setCompoundDrawables(getCompoundDrawables()[0],getCompoundDrawables()[1],drawable,getCompoundDrawables()[3]);
    }

    /**
     *   edittext              ,              0,  ,    
     * by Hankkin at:2015 8 11  16:32:47
     * @param v
     * @param hasFocus
     */
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus){
            setDeleteVisible(getText().length()>0);
        }else {
            setDeleteVisible(false);
        }
    }

그리고 저희 xml에서 이 컨트롤을 인용하면 ok입니다.
github 주소:
https://github.com/Hankkin/ClearEditTextDemo.git
소스 주소:
http://download.csdn.net/detail/lyhhj/8991711

좋은 웹페이지 즐겨찾기