編輯:Android開發實例
前言
本章內容是android.view.inputmethod.BaseInputConnection,為輸入法相關章節,版本為Android 2.3 r1,翻譯來自"六必治"。
正文
一、結構
public class BaseInputConnection extends Object implements InputConnection
java.lang.Object
android.view.inputmethod.BaseInputConnection
二、概述
InputConnection接口實現的基類,注意大多數行為提供的是Editable聯接。本類的實現一定要實現getEditable()
提供對它們自己的可編輯對象的訪問。
三、公共方法
public boolean beginBatchEdit ()
缺省實現什麼也不做。
public boolean clearMetaKeyStates (int states)
缺省實現用MetaKeyKeyListener.clearMetaKeyState(long, int)
來清除狀態。
參數
states 要清除的狀態,每個KeyEvent.getMetaState()
中可能是1或個狀態。
返回值
成功返回true,輸入連接無效時返回false。
public boolean commitCompletion (CompletionInfo text)
缺省實現什麼也不做。
參數
text 提交的完成。
返回值
成功返回true,輸入連接無效時返回false。
public boolean commitText (CharSequence text, int newCursorPosition)
缺省實現將用給出的文本替代正在構建的文本。另外在虛擬狀態時,將發送包含新文本的按鍵事件並清空可編輯控件的緩存。
參數
text 提交的文本。
newCursorPosition 文本范圍內新光標位置。如> 0,從文本未尾-1起計算;如<= 0,從文本起始處計算。所以是1時總是在剛插入文本之後。注意這意味著你不能將位置定義在文本中,因為編輯器可以修改你提交的文本,所以無必要將光標定位在文本中。
返回值
成功返回true,輸入連接無效時返回false。
public boolean deleteSurroundingText (int leftLength, int rightLength)
缺省實現將刪除當前光標位置附近的可編輯文本。
參數
leftLength 刪除文本在當前光標位置前的字符數
rightLength 刪除文本在當前光標位置後的字符數。
返回值
成功返回true,輸入連接無效時返回false。。
public boolean endBatchEdit ()
缺省實現什麼也不做。
public boolean finishComposingText ()
缺省實現將用給定的文本替代正在構建的文本。另外在虛擬狀態時,將發送包含新文本的按鍵事件並清空可編輯控件的緩存。
public static int getComposingSpanEnd (Spannable text)
public static int getComposingSpanStart (Spannable text)
public int getCursorCapsMode (int reqModes)
缺省實現時,由TextUtils.getCapsMode返回當前可編輯文本的選定文本的光標大小寫狀態,虛擬狀態時總是返回0。
參數
reqModes 依據TextUtils.getCapsMode
的
定義取得期望的狀態。通過已定義的常數,你可以輕易地傳遞TextBoxAttribute.contentType
到
當前。
返回值
返回當前有效的大小寫狀態。
public Editable getEditable ()
返回編輯操作的目標。缺省的實現是返回自己的虛擬可編輯控件,子類須重載一個可編輯控件並提供給它自己。
public ExtractedText getExtractedText (ExtractedTextRequest request, int flags)
缺省實現總是返回空。
參數
request 描述如何返回文本。
flags 額外的客戶端控制選項,0或GET_EXTRACTED_TEXT_MONITOR
。
返回值
返回ExtractedText對象描述文本視窗的狀態並包含提取文本的本身。
public CharSequence getSelectedText (int flags)
缺省實現是返回當前選擇文本,沒有選取則為空。
參數
flags 額外選項控制文本如何返回,可能為0或GET_TEXT_WITH_STYLES
。
返回值
返回當前選擇文本,沒有選取則為空。
public CharSequence getTextAfterCursor (int length, int flags)
缺省的實現是返回緩存中當前光標位置後給定數量的文本。
參數
length 期望的文本長度。
flags 如何返回文本的額外控制。可能為0或GET_TEXT_WITH_STYLES
。
返回值
返回光標位置後的文本,返回文本的長度可能小於n。
public CharSequence getTextBeforeCursor (int length, int flags)
缺省的實現是返回緩存中當前光標位置前給定數量的文本。
參數
length 期望的文本長度。
flags 如何返回文本的額外控制。可能為0或GET_TEXT_WITH_STYLES
。
返回值
返回光標位置前的文本,返回文本的長度可能小於n。
public boolean performContextMenuAction (int id)
缺省實現是什麼也不做。
public boolean performEditorAction (int actionCode)
缺省實現將其發送至返回鍵(enter key)。
參數
actionCode 必須是EditorInfo.editorType
中一常量之一,如EditorInfo.EDITOR_ACTION_GO
。
返回值
成功返回true,輸入連接無效時返回false。
public boolean performPrivateCommand (String action, Bundle data)
缺省實現是什麼也不做。
參數
action 執行的命令名稱。必須是作用域的名稱(譯者注:帶包名,如”com.test.Command”),如以你自己的包名稱前綴,這樣不同的開發者就不會創建產生沖突的命令。
data 命令中的數據。
返回值
命令發送返回true(無論相關的編輯器是否理解它),如輸入連接無效返回false。
public static final void removeComposingSpans (Spannable text)
public boolean reportFullscreenMode (boolean enabled)
以當前的全屏模式更新InputMethodManager。
public boolean sendKeyEvent (KeyEvent event)
提供窗口附屬輸入連接視窗的發送按鍵事件的標准實現。
參數
event 按鍵事件。
返回值
成功返回true,輸入連接無效時返回false。
public boolean setComposingRegion (int start, int end)
將特定區域標記為正在構建文本。任何以前設置的正在構建文本自動清除。正在構建文本應用缺省樣式。
參數
start 文本中正在構建區域開始位置。
end 文本中正在構建區域結束位置。
返回值
成功返回true,輸入連接無效時返回false。
public static void setComposingSpans (Spannable text)
public boolean setComposingText (CharSequence text, int newCursorPosition).
缺省實現是將給定文本置入可編輯文本,替代任何正在構建文本。新文本標記為正在構建文本並應用構建樣式。
參數
text 正在構建文本,如必要應用樣式。如文本無附屬樣式,將正在構建文本應用缺省樣式。參見how to attach style object to the text。{#link android.text.SpannableString} 和{#link android.text.SpannableStringBuilder}是實現的接口。
newCursorPosition 文本范圍內新光標位置。如> 0,從文本未尾-1起計算;如<= 0,從文本起始處計算。所以是1時總是在剛插入文本之後。注意這意味著你不能將位置定義在文本中,因為編輯器可以修改你提交的文本,所以無必要將光標定位在文本中。
返回值
成功返回true,輸入連接無效時返回false。
public boolean setSelection (int start, int end)
缺省實現是在當前可編輯文本中改變選取的位置。
返回值
成功返回true,輸入連接無效時返回false。
四、補充
文章鏈接
Android全屏繪制
全屏手寫輸入的筆跡獲取
手寫輸入法實現過程中的問題
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
我們知道Intent的應用,可以啟動別一個Activity,那麼是否可以啟動別外的一個應用程序呢,答案是可以的。 1、首先我們新建一個Android應用,名為An
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
Toast英文含義是吐司,在Android中,它就像烘烤機裡做好的吐司彈出來,並持續一小段時間後慢慢消失Toast也是一個容器,可以包含各種View,並承載著它們