2016-06-19 12 views
1

私はEditTextビューを持っています。私のアイデアは、タッチ・イベントを選択してクリップボードのメモリにコピーするためのタッチイベントです。これまではオフセットを使ってSelectionを設定することができましたが、それはのため""です。次の遭遇する空白やテキストの終わり/開始までどのように拡張できますか?EditTextでSelectionを単語全体に拡張するには?

どのように私は上記の方法でそのような選択肢を拡張できますか?これまで

コード:

@Override 
public boolean onTouch(View v, MotionEvent event) 
{ 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     float x = event.getX() + getScrollX(); 
     int offset = getOffset(event); 
     if(offset != Integer.MIN_VALUE){ 
       setSelection(offset); 
       String selectedText = getText().toString() 
          .substring(getSelectionStart(), getSelectionEnd()); 

        //TODO: extend selection otherwise copies "" 

       putInClipMemory(selectedText); 
     } 
    return true; 
} 

感謝。

+1

ブレーク反復子を使用することができます。https://stackoverflow.com/a/44602493/3681880 – Suragch

答えて

2

あなたは、あなたのselectedTextを設定しているときsubstringを呼び出すときgetSelectionEnd()のではなく、あなたの開始選択インデックスの後に次のスペースの指数を計算し、(私の例では、以下のendIndex)それを使用することができるはずです。たとえばについては

String substringFromStartSelection = getText().toString().substring (getSelectionStart()); 
int nextSpaceIndex = substringFromStartSelection.indexOf(" "); 
int selectionEnd = getSelectionStart() + nextSpaceIndex; 
+1

は単語がピリオドで終了した場合に動作、またはスペースではないだろう、別のアプローチは 'BreakIterator.getWordInstance()'を使うことです。 https://stackoverflow.com/questions/42219292/how-does-breakiterator-work-in-androidを参照してください。 – Suragch

関連する問題