android 獲取textview中我們所點選的某個字(句)
阿新 • • 發佈:2019-02-15
通常我們為textview繫結點選事件只能監聽整個textview的點選時間,如我們想獲取我們實際點的是哪一個字可通過以下方法實現
(textview可以繫結單擊或長按監聽器)
textView = (TextView) findViewById(R.id.word); SpannableStringBuilder s = new SpannableStringBuilder(textView.getText()); for(int i=0;i<s.length();i++){ s.setSpan(new ClickableSpan() { @Override public void onClick(View v) { } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setColor(0xff000000); //設定檔案顏色 ds.setUnderlineText(false); //設定下劃線 } },i,i+1, Spanned.SPAN_EXCLUSIVE_INCLUSIVE); } //設定textview中所有文字為spannable格式 textView.setText(s,TextView.BufferType.SPANNABLE); //啟用上面為每個字繫結的ClickableSpan textView.setMovementMethod(LinkMovementMethod.getInstance()); textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //若沒有繫結clickableSpan,無法使用subSequence方法 //若tv.getSelectionStart()-1,則輸出點選的文字以及其上一個文字 //若tv.getSelectionEnd()+1,則輸出點選的文字以及其下一個文字,如此類推 //通過標點判斷還可擷取一段文字中我們所點選的那句話 TextView tv = (TextView) v; String s = tv .getText() .subSequence(tv.getSelectionStart(), tv.getSelectionEnd()).toString(); Log.d("tapped on:", s); } });