public boolean onTouchEvent(MotionEvent event) { int n = getOffsetForPosition(event.getX(), event.getY()); if (event.getAction() == MotionEvent.ACTION_UP && n >= 0) { String s = getText().toString().substring(0, n); if (soft_cursor) s = s.replace(soft_cursor_text, "").replace(" ", ""); n = s.length(); Rime.RimeSetCaretPos(n); TrimeService.getService().updateComposing(); } return true; }
public void setText() { if (getVisibility() != View.VISIBLE) return; Rime.RimeComposition r = Rime.getComposition(); String s = ""; if (r != null) s = r.getText(); if (soft_cursor) s = s.replace(caret, soft_cursor_text); setText(s, BufferType.SPANNABLE); int n = s.length(); if (n > 0 && r != null) { SpannableString ss = (SpannableString) getText(); int start = r.getStart(); int end = r.getEnd(); ss.setSpan(hilited_text_color_span, start, end, SpannableString.SPAN_INCLUSIVE_INCLUSIVE); ss.setSpan(hilited_back_color_span, start, end, SpannableString.SPAN_INCLUSIVE_INCLUSIVE); ss.setSpan(underline_span, start, end, SpannableString.SPAN_INCLUSIVE_INCLUSIVE); } }