2014-01-24 76 views
4

我想爲EditText提供簡單的格式化按鈕,例如,如果未選擇文本,則插入<strong></strong>的按鈕,否則將選擇的文本包裝在<strong>標籤中。自定義EditText的ActionMenu

我使用Support Library v7和ActionBarCompat。我設法在我的EditText焦點更改後開始自定義ActionMode。但是,當我長時間觸摸EditText中的文本時,將打開另一個ActionMode菜單,其中包含複製/粘貼/ ...按鈕,這可能是Android的默認行爲。我怎樣才能禁止這個第二個菜單,但仍然讓用戶選擇EditText的內容的一部分?

或者我想能夠使用setCustomSelectionActionModeCallback(...)自定義默認菜單,但使用支持庫。我怎麼能這樣做?

回答

3

不幸的是,TextViewEditText不提供API以供您使用ActionBarCompat類。但是,您應該能夠覆蓋此行爲。

設置一個自定義onLongClickListener,您可以在其中設置自己的狀態信息並呼叫supportInvalidateOptionsMenu()。請務必從OnLongClickListener.onLongClick()方法中返回「真」,表明您已消耗點擊。然後,在您的onPrepareOptionsMenu中,您可以添加您希望用於自定義操作欄的任何新菜單項。我建議不要使用TextView上下文菜單項ID'selectAll','cut','copy'和'paste',只是爲了安全起見。

+0

嗨拉里,謝謝你的回答。當然,我可以實現我自己的東西,更不用說我可以停止顯示EditText的ActionMenu。然而,看起來好像文本選擇(使用可拖動的句柄等)與ActionMenu緊密耦合,因此也會被禁用。我可能試圖實現我自己的文本選擇行爲,但這似乎是一個很大的工作,我真的想避免這一點...任何想法呢? – janoliver

+1

不幸的是,核心EditText(實際上它是超類TextView)完全爲你管理它並設置它自己的動作模式。因此,如果您禁用操作模式並使用自己的操作模式,則必須重新執行選擇,複製,剪切和粘貼操作。 –