簡體   English   中英

選擇文字時如何更改textview的cursor顏色

[英]How to change the cursor color of textview when selecting text

在文本視圖中選擇文本時,我正在嘗試更改突出顯示顏色和 cursor 顏色。 通過stackoverflow帖子,我能夠使用更改突出顯示顏色

textView.highlightColor = ContextCompat.getColor(context, R.color.red_1)

我想將 cursor 顏色更改為自定義顏色。 通過瀏覽大量stackoverflow帖子,其中一個答案建議更改強調色。 但我不想改變它,因為它會影響我幫助中的很多 UI 屬性。 我找不到任何其他解決方案。

在此處輸入圖像描述

通過Theme定義@style來更改句柄color

<style name="MyCustomTheme" parent="@style/MyNotSoCustomTheme">
        <item name="android:textSelectHandle">@drawable/text_select_handle_middle</item>
        <item name="android:textSelectHandleLeft">@drawable/text_select_handle_left</item>
        <item name="android:textSelectHandleRight">@drawable/text_select_handle_right</item>
</style>

以編程方式進行:

try {
    final Field fEditor = TextView.class.getDeclaredField("mEditor");
    fEditor.setAccessible(true);
    final Object editor = fEditor.get(editText);

    final Field fSelectHandleLeft = editor.getClass().getDeclaredField("mSelectHandleLeft");
    final Field fSelectHandleRight = editor.getClass().getDeclaredField("mSelectHandleRight");
    final Field fSelectHandleCenter = editor.getClass().getDeclaredField("mSelectHandleCenter");

    fSelectHandleLeft.setAccessible(true);
    fSelectHandleRight.setAccessible(true);
    fSelectHandleCenter.setAccessible(true);

    final Resources res = context.getResources();

    fSelectHandleLeft.set(editor, res.getDrawable(R.drawable.text_select_handle_left));
    fSelectHandleRight.set(editor, res.getDrawable(R.drawable.text_select_handle_right));
    fSelectHandleCenter.set(editor, res.getDrawable(R.drawable.text_select_handle_middle));
} catch (final Exception ignored) {
}

要更改選定的文本顏色,您可以將xml中的textColorHighlight設置為:

android:textColorHighlight="#ff0000"

通過樣式,您可以通過以下方式實現:

<item name="android:textColorHighlight">@color/m_highlight_green</item>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM