1. 程式人生 > >addTextChangedListener和TextWatcher實現微信編輯框的輸入監聽效果

addTextChangedListener和TextWatcher實現微信編輯框的輸入監聽效果

     最近在做一個仿照微信的UI設計,其中微信的輸入框監聽效果挺人性化的,倘若編輯框裡面沒有內容,登入按鈕就不高亮,並且不讓你登入。所以在網上找一下實現的方法,最後發現了有addTextChangedListener 這麼一個東東。最後實現效果還是不錯滴( ^_^ )。廢話不多說,進入正文。

      addTextChangedListener內部定義了三個方法:分別是

                                               @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(CharSequence s, int start, int count,int after) { }
                        //輸入接受後監聽編輯框的情況

</pre><pre class="java" name="code">

        其中的CharSequence s引數表示的是編輯框的內容,int start表示的是未輸入時編輯框的文字長度,int before表示的是輸入後文本的長度。

        其中的onTextChanged方法不太瞭解其用法,但onTextChange方法則可以在輸入過程中監聽使用者的輸入,如果使用者輸入不應該出現的字元,你就可以在這個輸入過程中檢驗輸入的合法性,並給與提示。而afterTextChange方法則監聽輸入結束後的文字情況。

        在這裡我們則用afterTextChange監聽輸入後的情況,檢驗編輯框的字元是否為空。但是微信上面有兩個輸入框,分別是使用者名稱和密碼。所以在需要在編輯框裡面監聽本編輯框不為空的同時檢驗另一個編輯框的字元不為空,才能讓按鈕高亮。粗略的設計了一下,基本實現了功能。
 

phone_account.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(s.length()!=0){
					clean_account.setImageResource(R.drawable.editview_clean);
					if(phone_password.getText().toString().equals("")){
					login.setBackgroundResource(R.drawable.button_green_useless);	
					}else{login.setBackgroundResource(R.drawable.button_green);}
				                  }
				else{clean_account.setImageResource(R.drawable.touming);
				login.setBackgroundResource(R.drawable.button_green_useless);}
			}});
        
        phone_account.setOnFocusChangeListener(new OnFocusChangeListener() {
     	   @Override
     	   public void onFocusChange(View v, boolean hasFocus) {
     	    // TODO Auto-generated method stub
     	    if (hasFocus) {
     	    	if(phone_account.getText().toString().equals("")){}else{
     	    	clean_account.setImageResource(R.drawable.editview_clean);
     	    	}
             phone.setBackgroundResource(R.drawable.editview_bord_onfocus);
             clean_password.setImageResource(R.drawable.touming);
     	                   }else {
     	     phone.setBackgroundResource(R.drawable.editview_bord_unfocus);}   
     	                         }                                    	  });
        phone_password.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(s.length()!=0){
					clean_password.setImageResource(R.drawable.editview_clean);
					if(phone_account.getText().toString().equals("")){
					login.setBackgroundResource(R.drawable.button_green_useless);	
					}else{login.setBackgroundResource(R.drawable.button_green);}
				                  }
				else{clean_password.setImageResource(R.drawable.touming);
				login.setBackgroundResource(R.drawable.button_green_useless);}
			}});
        
        phone_password.setOnFocusChangeListener(new OnFocusChangeListener() {
     	   @Override
     	   public void onFocusChange(View v, boolean hasFocus) {
     	    // TODO Auto-generated method stub
     	    if (hasFocus) {
     	    	if(phone_password.getText().toString().equals("")){}else{
         	    	clean_password.setImageResource(R.drawable.editview_clean);
         	    	}
             password.setBackgroundResource(R.drawable.editview_bord_onfocus);
             clean_account.setImageResource(R.drawable.touming);
     	                   }else {
     	     password.setBackgroundResource(R.drawable.editview_bord_unfocus);}   
     	                         } 



相關推薦

addTextChangedListenerTextWatcher實現編輯輸入效果

     最近在做一個仿照微信的UI設計,其中微信的輸入框監聽效果挺人性化的,倘若編輯框裡面沒有內容,登入按鈕就不高亮,並且不讓你登入。所以在網上找一下實現的方法,最後發現了有addTextChangedListener 這麼一個東東。最後實現效果還是不錯滴( ^_^ )。

CSS實現對話

對話 data- tps 圖片 微信 bsp src .com scn CSS實現微信對話框

SwipeListView 具體解釋 實現,QQ等滑動刪除效果

span 點擊 tor 支持 position pad edi find htm QQ或者微信出現過滑動,近期聯系人列表,能夠刪去當前選中的聯系人,這個功能玩起來非常爽 , 就是試著做了下。事實上是使用了開源框架SwipeListView 。

SwipeListView 詳解 實現,QQ等滑動刪除效果

今天看別人專案,看到別人使用了SwipeListView,Google一把,果然github上的,也參考了csdn上的幾篇文章,然後自己寫了個例子,分享給大家。 效果圖: 嗯,看一眼SwipeListView的引數的設定: If you decide to u

瀏覽器 網頁開發 《返回》 按鈕

問題描述: 在實際的應用中,我們常常需要實現在移動app和瀏覽器中點選返回、後退、上一頁等按鈕實現自己的關閉頁面、調整到指定頁面或執行一些其它操作的 需求,那在程式碼中怎樣監聽當點選微信、支付寶、百度糯米、百度錢包等app的返回按鈕或者瀏覽器的上一頁或後退按鈕的事件呢。

小程式滾動

微信小程式是沒有真實DOM節點的,也就是說沒有window物件,怎麼實現類似web網頁的滾動監聽事件呢? 在頁面Page()函式裡,有個onPageScroll方法,可以輸出滾動距離: onPageScroll:function(e){ cons

js input 輸入事件(keyup、nzBlur)

<input type="text" placeholder="名稱" (keyup)="searchDataByName()" (nzBlur)="tab($event)"> <script> function tab(event){ c

itchat+pillow實現好友頭像爬取拼接

rsa ava itchat ioerror 縮小 獲取好友列表 con cmd body 源碼下載鏈接:https://pan.baidu.com/s/1cPZhwy 密碼:2t2o ###效果圖 使用方法: 下載項目到本地,打開項目主目錄,打開命令行,輸入:

手把手實現網頁授權支付,附源代碼(VUE and thinkPHP)

nec ble 名單 ret 一次 hash 掃一掃 網頁 ada wechat github 手把手實現微信網頁授權和微信支付,附源代碼(VUE and thinkPHP) 概述 公眾號開發是痛苦的,痛苦在好多問題開發者文檔是沒有提到的,是需要你猜的. 在開發過程中翻

popupWindow詳解仿例項

1、介紹 (1)使用PopupWindow可實現彈出視窗效果,,其實和AlertDialog一樣,也是一種對話方塊,兩者也經常混用,但是也各有特點。 AlertDialog是非阻塞式對話方塊:AlertDialog彈出時,後臺還可以做事情;而PopupWindow是阻塞式對話方塊:Pop

Vux+Cordova打包的安卓App實現分享朋友朋友圈

知識儲備 Cordova Plugin ShareSDK 外掛 什麼是Cordova Plugin ShareSDK Cordova Plugin ShareSDK封裝了ShareSDK的android和ios平臺的分享功能。在hybird app開發中可以方便的完成分享功能。如:ion

python實現訊息群發自動回覆

基於python的第三方庫itchat, 實現微信祝福分組群發和自動回覆好友祝福的功能。 這裡的分組傳送實現原理是這樣的, 首先你想群發訊息給誰, 就把誰拉到一個群聊裡,然後程式碼遍歷群聊裡的所有成員, 挨個私信發祝福。 需要明確的有一下幾點: 1. 

android實現朋友圈好友分享功能

今天的這篇文章是基於上一篇微信登入的基礎實現的。可以先看看我的微信登入的實現。 廢話不多說,先看執行效果 首介面,點選微信登入,彈出分享選單,樓主比較懶,圖片和按鈕文字都沒換,希望大家不要介意 點選微信好友 我們到微信看看是否收到 可以看到,沒毛病,

java實現windows下amr轉換為mp3(可實現語音qq語音轉換)

最近做一個專案需要將微信的語音檔案放在頁面進行播放,查了好多資料發現,web頁面直接播放並沒有一個好的解決方案,於是就想到了先將amr檔案轉換成易於在頁面播放的mp3檔案,然後在進行播放,現在將amr檔案轉化為mp3檔案的幾種方式以及踩過的坑分享一下: 查了好多資料,總結一下,amr轉換mp3的方式有如下幾

PHP實現支付(jsapi支付)退款(無需整合支付SDK

1.PHP實現微信支付(jsapi支付)流程 2.ThinkPHP中實現微信支付(jsapi支付)流程 3.PHP實現微信申請退款 這幾篇都是使用了微信官方給的PHP版本的SDK,進行支付的時候寫程式碼可以省不少事,步驟也挺簡化,但是整合SDK有很多坑,很多人說

詳細實現輸入效果(textView自適應文字高度)

前言 最近會不斷推出一些輪子,這次寫了一個控制元件,類似微信輸入框,評論View,隨著文字增加,textView自增長高度, 如果喜歡我的文章,可以關注我微博:吖了個崢,也可以來小碼哥,瞭解下我們的iOS培訓課程。後續還會更新更多內容,有任何問題,歡迎簡書留言崢吖。。。 Dem

python 實現遠端控制喚醒內網機器遠端關閉windows 主機!

python 實現微信遠端控制喚醒內網機器和遠端關閉windows 主機! 準備工作 本程式,主要是實現遠端管理 Windows10作業系統的開機和關機: 進群進群:943752371可以獲取Python各類入門學習資料! 這是我的微信公眾號【Python程式設計之家】各位大佬

用 WeixinJSBridge.invoke函式實現分享標題文案

一. 分享html <html> <head> <meta charset='utf-8'> <script type='text/javascript' src='1.js'></script> </he

Android應用實現登入分享

微信登入和分享總結起來有四點: 1、應用申請嚴格(獲取appid和appsecret),大概需要一週。如果需要登入,還要申請登入介面,需要一週。 2、由於在申請的時候需要簽名信息,官方下載的apk,把

android-----------實現登入分享功能。

1.通過微信官網獲得APPID和.jks檔案。 (.jks檔案的獲得是通過AS中的Build-Generate Signed APK-如果已有.jks就選擇已有的路徑,對應好兩次的密碼。 ) 2.導依賴 compile 'com.tencent.mm.opensdk:wec