package com.yydcdut.note.markdown; import android.text.Editable; import android.widget.Toast; import com.yydcdut.rxmarkdown.RxMDConfiguration; import com.yydcdut.rxmarkdown.RxMDEditText; /** * Created by yuyidong on 16/8/17. */ public class StrikeThroughController { private RxMDEditText mRxMDEditText; private RxMDConfiguration mRxMDConfiguration; public StrikeThroughController(RxMDEditText rxMDEditText, RxMDConfiguration rxMDConfiguration) { mRxMDEditText = rxMDEditText; mRxMDConfiguration = rxMDConfiguration; } public void doStrikeThrough() { int start = mRxMDEditText.getSelectionStart(); int end = mRxMDEditText.getSelectionEnd(); if (start == end) { mRxMDEditText.getText().insert(start, "~~~~"); mRxMDEditText.setSelection(start + 2, end + 2); } else if (end - start > 4) {//选中了4个以上 int position0 = Utils.findBeforeNewLineChar(mRxMDEditText.getText(), start) + 1; int position00 = Utils.findBeforeNewLineChar(mRxMDEditText.getText(), end) + 1; if (position0 != position00) { Toast.makeText(mRxMDEditText.getContext(), "无法操作多行", Toast.LENGTH_SHORT).show(); return; } Editable editable = mRxMDEditText.getText(); if ("~~".equals(editable.subSequence(start, start + "~~".length()).toString()) && "~~".equals(editable.subSequence(end - "~~".length(), end).toString())) { mRxMDEditText.getText().delete(end - "~~".length(), end); mRxMDEditText.getText().delete(start, start + "~~".length()); mRxMDEditText.setSelection(start, end - "~~".length() * 2); } else { mRxMDEditText.getText().insert(end, "~~"); mRxMDEditText.getText().insert(start, "~~"); mRxMDEditText.setSelection(start, end + "~~".length() * 2); } } else { mRxMDEditText.getText().insert(end, "~~"); mRxMDEditText.getText().insert(start, "~~"); mRxMDEditText.setSelection(start, end + "~~".length() * 2); } } }