1. 程式人生 > >Android EditText 的使用及值得注意的點——如如何遮蔽EditText的複製、貼上功能

Android EditText 的使用及值得注意的點——如如何遮蔽EditText的複製、貼上功能

Android上有很多輸入法應用,每種輸入法都有各自的特點,輸入法多數時候是和EditText配合使用,結合我自己的親身實踐分享一下使用EditText過程中遇到的一些問題及解決方法。

置預設輸入法  

有時候為了提高使用者體驗,在彈出輸入法時需要設定預設的輸入狀態,比如單詞應用彈出輸入法時,輸入法最好是在英文輸入狀態下。如果是字典應用,彈出輸入法時最好是在中文輸入狀態下,Android並沒有提供設定預設的輸入狀態的介面,但我們可以通過如下方法一樣能夠達到想要的效果:

預設中文:

mEditText.setInputType(EditorInfo.TYPE_CLASS_TEXT);


mEditText.setInputType(EditorInfo.TYPE_CLASS_TEXT);

預設英文:

mEditText.setInputType(EditorInfo.TYPE_TEXT_VARIATION_URI);

開啟和關閉輸入法

手動控制輸入法的開關狀態也能提升使用者體驗,比如:

  • 有的搜尋框會有一個清除按鈕,點選清除按鈕時就應該彈出輸入法,因為使用者清除搜尋內容的目的多數時候是需要輸入新的內容;

  • 執行搜尋時應該隱藏輸入法,因為顯示輸入法時會遮擋搜尋結果,使用者體驗不太好;

  • 鬧鐘來時或者有其它window彈出時應該隱藏輸入法,因為輸入法也是window,如果不隱藏可能導致輸入法遮擋住了其它window等使用者體驗不太友好的問題。

開啟輸入法:

privatevoidopen(Contextcontext,VieweditText){
    InputMethodManagerinputMethodManager = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.showSoftInput(editText,0);
}

關閉輸入法:

privatevoidclose(Contextcontext,VieweditText){

InputMethodManagerinputMethodManager = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);

inputMethodManager.hideSoftInputFromWindow(editText.getWindowToken(),0);

}

監聽EditText的輸入狀態

  • 類似新浪微博,在輸入內容時會提示還可以輸入多少字;

  • 有的搜尋引擎,輸入內容時實時顯示搜尋結果;

  • 有的輸入框有輸入長度限制,輸入內容超過長度限制時彈出提示資訊。

上面這些都可以通過監聽EditText的輸入狀態來實現,具體實現方式如下:

mInputEditTxt.addTextChangedListener(newTextWatcher(){

@Override

publicvoidbeforeTextChanged(CharSequences,intstart,intcount,intafter){

}

@Override

publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){

System.out.println("監聽EditText輸入內容的變化,在這裡可以監聽輸入內容的長度。");

}

@Override

publicvoidafterTextChanged(Editables){

System.out.println("這裡可以實現所輸即所得,使用者輸入的同時可以立即在這裡根據輸入內容執行操作,顯示搜尋結果!");

}

});

監聽輸入法中的回車按鈕

比如搜狗輸入法的右下角有一個回車按鈕,我們希望使用者點選它時也執行確認功能,可以通過監聽EditText的按鍵點選事件來實現:

/**

     * 監聽輸入法按鍵

     *

     * */

mInputEditTxt.setOnKeyListener(newOnKeyListener(){

@Override

publicbooleanonKey(Viewv,intkeyCode,KeyEventevent){

if(keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP){

System.out.println("手指彈起時執行確認功能");

returntrue;

}

returnfalse;

}

});

改變輸入法中回車按鈕的顯示內容

如果回車按鈕是執行搜尋功能,則回車按鈕上顯示”搜尋”,如果是執行傳送功能,則顯示”傳送”,如果是下一步,則顯示”下一步”。

實現這個功能需要呼叫EditText的setImeOptions方法:

/**

*

* IME_ACTION_SEARCH 搜尋

* IME_ACTION_SEND 傳送

* IME_ACTION_NEXT 下一步

* IME_ACTION_DONE 完成

*/

mInputEditTxt.setImeOptions(EditorInfo.IME_ACTION_SEARCH);

限制輸入內容

有時候我們根本就不想使用者輸入一些雜七雜八的內容,因為這需要程式針對輸入的內容做各種處理,如果處理不當還會有好多不可預見的問題,索性在輸入內容時就禁止使用者輸入一些非法字元,這可以通過下面的方式實現,新建一個類InputTxtFilter:

publicclassInputTxtFilter{

publicstaticfinalintINPUT_TYPE_EN = 0x01;

相關推薦

Android EditText 的使用值得注意——如何遮蔽EditText複製貼上功能

Android上有很多輸入法應用,每種輸入法都有各自的特點,輸入法多數時候是和EditText配合使用,結合我自己的親身實踐分享一下使用EditText過程中遇到的一些問題及解決方法。 置預設輸入法   有時候為了提高使用者體驗,在彈出輸入法時需要設定

Android手機SD卡檔案或目錄拷貝複製貼上功能實現程式碼

package com.copy.file; /** * @author wainiwann * Android SD卡檔案目錄拷貝操作 * */ import java.io.File; import java.io.FileInputStream; import ja

Android EditText的屬性和方法介紹使用值得注意

一、EditView屬性詳細介紹: 屬性名稱 描述 android:utoLink 設定是否當文字為URL連結/email/電話號碼/map時,文字顯示為可點選的連結。 可選值(none/web/email/phone/map/all)。 這裡只有在同時設定tex

Android EditText 的使用值得注意的地方

Android上有很多輸入法應用,每種輸入法都有各自的特點,輸入法多數時候是和EditText配合使用,結合我自己的親身實踐分享一下使用EditText過程中遇到的一些問題及解決方法。 設定預設輸入法   有時候為了提高使用者體驗,在彈出輸入法時需要設定預設的輸

Django瞭解安裝注意

Web框架之Django框架開發 一、什麼是web伺服器(瞭解) 當我們在瀏覽器輸入URL後,瀏覽器會先請求DNS伺服器,獲得請求站點的 IP 地址。然後傳送一個HTTP Request(請求)給擁有該 IP 的主機,接著就會接收到伺服器給我們的 HTTP Response(響應),瀏覽器經

叢集搭建通用過程一些注意

叢集搭建通用過程及一些注意點 0.設定靜態ip(vim /etc/sysconfig/network-scripts/ifcfg-eth0 中配置靜態ip),ip不變有利於後面的操作,但其實變了也只需要修改hosts檔案即可,這就是用計算機名的好處。 關於修改網路,當虛擬機器是克隆的

記Google Play上架測試注意

在要開始上架流程之前,有一些東西要準備好: (1)Google的開發者賬號(需要付費) (2)一款FQ工具 (3)手機要有Google Play應用商店和Google Play服務(測試時使用,因為國內手機大部分都是沒有的,自己想辦法搞定) 做好上面這些

使用 create-react-app 構建 react應用程式流程開發注意

一.瞭解 1.什麼是React.js React.js 是 Facebook 推出的一個用來構建使用者介面的 JavaScript 庫。 React 中,把一切東西都看成元件,而且所有元件有其狀態。什麼是狀態?簡單來說,一個元件有多種有限的狀態,但同時只能是一種狀態,不

Edittext不可編輯可選 & 解決Edittext第二次選才有效

問題1:Edittext不可編輯可點選 1、Edittext在新的api裡已經把editable功能標記deprecated。 2、但是如果設定enabled為false的話,點選事件也無效了。 解決1:設定focusable方法 哎,之前因為android studio的

40個js小技巧:遮蔽滑鼠右鍵取消選取防止複製貼上轉換位址列圖示

來源:http://www.cnblogs.com/aliang1992/p/6279291.html 1. oncontextmenu="window.event.returnValue=false" 將徹底遮蔽滑鼠右鍵 <table border oncont

Android系統剪貼簿(ClipboardManager)的使用: 通過程式碼複製貼上資料

1. 概述 操作 Android 系統剪貼簿的類在 android.content 包下(SDK API 11+),主要包含下面三個類: ClipboardManager: 表示一個剪貼簿

安卓5.0以後禁止文字編輯框EditText複製貼上選擇全選等功能的幾種可行性方法探索

現在各手機廠商深度化定製rom,在谷歌原生系統上重新開發了很多功能,比如EditText的長按或雙擊事件彈出框支援線上翻譯,搜尋等,如果你的專案出於資訊保安考慮想禁止這些功能實現的話,你會發現網上現有的方法都無法做到適配所有手機,總有那麼幾款漏網之魚,非常頭疼。下面介紹兩種自

split 分割 字串(分隔符:* ^ : | , .) 注意

【1】單個符號作為分隔符         Stringaddress="上海|上海市|閔行區|吳中路";      String[]splitAddress=address.split("\\|");//如果以豎線為分隔符,則split的時候需要加上兩個斜槓【\\】進行轉義

Java split 分割 字串(分隔符:* ^ : | , .) 注意 要轉義

(1)split表示式,其實就是一個正則表示式。* ^ | 等符號在正則表示式中屬於一種有特殊含義的字元,如果使用此種字元作為分隔符,必須使用轉義符即\加以轉義。 (2)如果使用多個分隔符則需要藉助

split 分割 字串(分隔符:* ^ : | , .) 注意

【1】單個符號作為分隔符 String address=”上海|上海市|閔行區|吳中路”; String[] splitAddress=address.split(“\|”); //如果以豎線為分隔符,則split的時候需要加上兩個

android 通過監聽edittext實現button的擊事件

監聽 edittext 如果你沒有接第三方的輸入設備,那麽點擊按鈕只需找到你的button然後:button.performClick();就可以了那麽如果你用到第三方輸入法,有些時候監聽就沒有這麽好使了:以下場景為:外接輸入服務,直接給我丟一串字符,我拿到字符後執行按鈕事件代碼如下: editTe

將專案打成war包並用tomcat部署的方法,步驟注意

部署的遇到第一個問題,就是tomcat和jdk的環境問題: 首先 理解為啥要關注這二者的環境呢?他們還是有關係的–tomcat 作為比較流行的java Web伺服器也是用java來實現的一個比較大的軟體 它也必須在虛擬機器JVM上執行 。 而java很多運用都是用在web開發上 所以他們就聯絡在一起

vue Axios 使用注意

1、使用npm安裝 npm install axios 使用 cdn: <script src="https://unpkg.com/axios/dist/axios.min.js"></script>  2、引用 import Axios fr

HTTPS配置優化注意

Nginx官網反向代理時配置SSL證書,需要enable ngx_http_ssl_module模組,且需要支援的openssl開發版,預設配置引數比較少,但是可以根據實際情況對效能及安全性做成優化,具體如下! 一、SSL引數具體優化(這裡只填主要的) 1. ssl_protocols TLSv

open函式的一些注意r,r+,w,w+,a,a+的區別

open函式的一些注意點 open(file[, mode[, buffering[, encoding[, errors[, newline]]]]]) (1)file檔案路徑及名稱,需要加引號如”/Users/macxunlei/Desktop/a.txt” (2)mode檔案開啟模式,r、w、a為開啟檔