2012-04-17 94 views
0

我需要一個每次在EditText中進行選擇更改時都會調用的偵聽器。 我搜索了一下,但找不到任何對API級別7有用的東西。 我正在編寫文本編輯器,並且每次用戶選擇粗體/斜體/帶下劃線的文本時,都希望顯示粗體/斜體/帶下劃線的按​​鈕。Android中的文本選擇偵聽器(API級別7)

+0

你試過這個嗎? http://developer.android.com/reference/android/widget/TextView.html#addTextChangedListener%28android.text.TextWatcher%29 – Shubhayu 2012-04-17 09:19:34

+0

根據TextWatcher的描述 「將TextWatcher添加到其方法列表中只要這個TextView的文本發生變化就調用它。「 我需要的是一個監聽器,它告知何時文本上的選擇被改變而不是文本。 PS: 我剛剛嘗試過,並且在選擇更改時沒有任何TextWatcher的偵聽器被調用。 – Sazbak 2012-04-17 10:32:05

+0

您是否在擴展EditText以編輯您的編輯器? – Shubhayu 2012-04-17 10:42:28

回答

0

更好的方法是擴展EditText,然後根據您想要如何管理不斷變化的文本,您可以重寫2種方法之一來計算出您的自定義行爲。

  1. 如果你想改變選擇,那麼你可以使用onSelectionChanged()方法並在那裏實現你的代碼。

  2. 如果您想要在編輯器中更改文字時執行某些操作,則可以使用onTextChanged()

3

漂亮的老問題,但有人可能仍然需要這個,所以這裏是我的解決方案:由於與長按文本完成的文本選擇,我只是用了以下內容:

editText.setOnLongClickListener(new View.OnLongClickListener() { 

@Override 
public boolean onLongClick(View view) { 
     // do whatever you need to do on text selection 
    } 
}); 

這使得用於文本選擇的自定義行爲,並且不會阻止用戶複製/粘貼。

+2

如果您仍希望EditText執行其longPress處理程序並選擇文本,並返回true,那麼一定要在此返回false你會得到你的onLongClick()exectuted。 – 2016-04-13 17:08:09

相關問題