在编辑主界面note_edit.xml中添加布局，添加各种装饰文本的按钮
<HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="37dp"
        android:layout_gravity="bottom">
 
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal">
 
            <Button
                android:id="@+id/action_bold"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_weight="1"
                android:background="@drawable/action_bold" />
 
            <Button
                android:id="@+id/action_italic"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_weight="1"
                android:background="@drawable/action_italic" />
 


新加文本编辑器RichEditor
在build.gradle中引入依赖项
dependencies {
    implementation files("D:\\Lessons\\APPS\\httpcomponents-client-4.5.12-bin\\lib\\httpclient-osgi-4.5.12.jar")
    implementation files("D:\\Lessons\\APPS\\httpcomponents-client-4.5.12-bin\\lib\\httpclient-win-4.5.12.jar")
    implementation files("D:\\Lessons\\APPS\\httpcomponents-client-4.5.12-bin\\lib\\httpcore-4.4.13.jar")
    implementation 'jp.wasabeef:richeditor-android:1.2.2'//新增依赖
}

note_edit.xml中把原始“net.micode.notes.ui.NodeEditText“改为”jp.wasabeef.richeditor.RichEditor“
<jp.wasabeef.richeditor.RichEditor
                        android:id="@+id/note_edit_view"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"


NoteEditActivity类中的EditText改为RichEditor
    /** * 修改代码：富文本编辑器*/
    private RichEditor mNoteEditor;
    //private EditText mNoteEditor;

解决冲突
设置一个新的属性mText，在监听器中把text赋值给mText
//RichEditor类文件
public interface OnTextChangeListener {
  void onTextChange(String text);
}

在初始化资源方法initResources中加入文本监听器，取出文本text
/**
修改代码块：设置富文本编辑器及监听器
 */
mNoteEditor = (RichEditor) findViewById(R.id.note_edit_view);
mNoteEditor.setOnTextChangeListener(new RichEditor.OnTextChangeListener() {
    @Override
    public void onTextChange(String text) {
        mText = text;
        mNoteLength = textChange(mText).length();
        mNoteHeaderHolder.tvModified.setText(DateUtils.formatDateTime(NoteEditActivity.this,
                mWorkingNote.getModifiedDate(), DateUtils.FORMAT_SHOW_DATE
                        | DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_SHOW_TIME
                        | DateUtils.FORMAT_SHOW_YEAR)+"\n字符数："+mNoteLength);
    }
});
同时原有的setText方法可以用setHtml方法来代替
mNoteEditor.setHtml(mText);//修改代码：设置便签编辑内容

实现富文本编辑功能
1.设置文本编辑框
/**
 * 新增方法：
 * 初始化富文本编辑框
 */
public void initRichEditor(){
    mNoteEditor.setEditorHeight(200);//设置编辑器界面高度
    mNoteEditor.setEditorFontSize(22);//字体大小
    mNoteEditor.setEditorFontColor(Color.BLACK);//字体颜色
    mNoteEditor.setPadding(6, 5, 6, 5);//内边距
    mNoteEditor.setPlaceholder("点击输入内容");//设置默认显示语句
    mNoteEditor.setInputEnabled(true);//设置编辑器是否可用
    mNoteEditor.setBackgroundResource(R.drawable.edit_white);//编辑背景
}


给每一个按钮配置资源，然后设置一个点击响应，其中调用富文本编辑器RichEditor中的参数
/* * 撤销当前标签状态下所有内容
 * */
findViewById(R.id.action_undo).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mNoteEditor.undo();
    }
});


设置字体颜色、字体底色更改时需要添加一个AlertDialog，支持用户选择不同的颜色
findViewById(R.id.action_bg_color).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {//设置点击响应方法
        mNoteEditor.focusEditor();
        new AlertDialog.Builder(NoteEditActivity.this).setTitle("选择字体背景颜色")//设置一个AlertDialog供用户选择具体的颜色
            .setSingleChoiceItems(R.array.text_bg_color, 0,
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        switch (which) {
                            //红
                            case 0:
                                mNoteEditor.setTextBackgroundColor(Color.RED);
                                break;
                            //黄
                            case 1:
                                mNoteEditor.setTextBackgroundColor(Color.YELLOW);
                                break;
                            //蓝
                            case 2:
                                mNoteEditor.setTextBackgroundColor(Color.BLUE);
                                break;
                            //绿
                            case 3:
                                mNoteEditor.setTextBackgroundColor(Color.GREEN);
                                break;
                            //黑
                            case 4:
                                mNoteEditor.setTextBackgroundColor(Color.BLACK);
                                break;
 
                            case 5:
                                mNoteEditor.setTextBackgroundColor(Color.WHITE);
                                break;
                        }
                    }
                }).show();
    }
});