ForegroundColorSpan无法正常工作(Android 9-Pie)

时间:2018-11-06 14:16:02

标签: android kotlin

在一条文本上使用ForegroundColorSpan而不是更改文本颜色时,当光标位于文本上方时,它将在其下划线。这是在运行Android 9(Pie)的我(物理)Pixel 3和也运行Android 9(Pie)的(物理)Pixel 1上发生的。

但是,当我在运行Android 7.1.1(牛轧糖)的(虚拟)FWVGA上运行它时,它会按预期启动。

我到处都是,但是我找不到任何相关信息(可能是因为Android 9相对较新?)

MainActivity.kt

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val editText = findViewById<EditText>(R.id.codeView)

        var ss: SpannableStringBuilder = SpannableStringBuilder("I'm RED and I'm GREEN now")

        //val testing123: Spanned = Html.fromHtml("<u><font color='#2eb6f0'>Blue I Hope</font></u>")
        val fcsRed: ForegroundColorSpan = ForegroundColorSpan(Color.RED)
        val fcsGreen: ForegroundColorSpan = ForegroundColorSpan(Color.GREEN)

        ss.run {
            setSpan(fcsRed, 3, 7, 0)
            setSpan(fcsGreen, 16, 21, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
        }

        editText.setText(ss)


    }
}

activity_main.xml-> codeView

<EditText
            android:id="@+id/codeView"
            android:text = ""
            android:layout_width="362dp"
            android:layout_height="503dp"
            android:layout_marginTop="4dp"
            android:layout_weight="1"
            android:gravity="top|left"
            android:inputType="textMultiLine"
            android:lines="40"
            android:maxLines="20000"
            android:minLines="1"
            android:scrollbars="vertical|horizontal"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.956" />

(物理)运行Android 9(Pie)的Pixel 3 (Physical) Pixel 3 running Android 9 (Pie)

(虚拟)运行Android 7.1.1(牛轧糖)的FWVGA (Virtual) FWVGA running Android 7.1.1 (Nougat)

1 个答案:

答案 0 :(得分:0)

设置>辅助功能>实验性>高对比度文字

在将我的Pixel 1恢复出厂设置(并使应用正常运行)之后,我发现它一定是我已启用的设置。浏览完所有设置后,我发现是由高对比度文本引起的字体颜色默认为黑色,并且仅在光标位于其上方时才将颜色显示为下划线。