From 1861b5fa53966964ad6feb01f0dfe51aac310270 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Thu, 22 Feb 2018 14:28:03 +0800 Subject: [PATCH] fix: editor auto breaking line if line is too long --- .../scriptdroid/ui/edit/editor/CodeEditText.java | 14 ++++++++++++++ .../scriptdroid/ui/edit/editor/CodeEditor.java | 3 +++ app/src/main/res/layout/code_editor.xml | 1 + 3 files changed, 18 insertions(+) diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/edit/editor/CodeEditText.java b/app/src/main/java/com/stardust/scriptdroid/ui/edit/editor/CodeEditText.java index a5c63b89..686a9b89 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/edit/editor/CodeEditText.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/edit/editor/CodeEditText.java @@ -24,6 +24,7 @@ import android.graphics.Paint; import android.graphics.Typeface; import android.support.v7.widget.AppCompatEditText; import android.text.Layout; +import android.text.method.ScrollingMovementMethod; import android.util.AttributeSet; import android.view.Gravity; import android.view.View; @@ -63,6 +64,8 @@ public class CodeEditText extends AppCompatEditText { setTextColor(Color.TRANSPARENT); // 设置字体 setTypeface(Typeface.MONOSPACE); + setMovementMethod(ScrollingMovementMethod.getInstance()); + setHorizontallyScrolling(true); mTheme = Theme.getDefault(getContext()); } @@ -231,4 +234,15 @@ public class CodeEditText extends AppCompatEditText { mHighlightTokens = highlightTokens; postInvalidate(); } + + @Override + public void setSelection(int index) { + if (index < 0) { + index = 0; + } + if (index > getText().length()) { + index = getText().length(); + } + super.setSelection(index); + } } diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/edit/editor/CodeEditor.java b/app/src/main/java/com/stardust/scriptdroid/ui/edit/editor/CodeEditor.java index c7c671e2..70e047ab 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/edit/editor/CodeEditor.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/edit/editor/CodeEditor.java @@ -164,6 +164,9 @@ public class CodeEditor extends HVScrollView { } public void jumpTo(int line, int col) { + if (line >= mCodeEditText.getLayout().getLineCount() || line < 0) { + return; + } mCodeEditText.setSelection(mCodeEditText.getLayout().getLineStart(line) + col); } diff --git a/app/src/main/res/layout/code_editor.xml b/app/src/main/res/layout/code_editor.xml index 68a0d4e3..4d81a249 100644 --- a/app/src/main/res/layout/code_editor.xml +++ b/app/src/main/res/layout/code_editor.xml @@ -4,6 +4,7 @@ android:id="@+id/code_edit_text" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:scrollbars="horizontal" android:textColor="@android:color/transparent" android:textCursorDrawable="@drawable/code_edit_text_cursor" android:textSize="15sp"/>