如何更改 EditText 句柄的颜色?
How to change color of EditText handles?
绿色从何而来?我试过更改 accentColor
属性,该属性在应用程序的其他部分有效,但在此处无效。
Lollipop 中应用程序的屏幕截图。
如何更改颜色:
- 文本处理可绘制对象?如何给它们上色?
- select-全背景颜色?
也许还有一些对未来有用的建议...你是怎么知道的?我遇到过所有这些令人困惑的 color/styling 问题。某处是否有某种列表告诉我,我需要为某个组件覆盖哪种默认颜色或属性?
要更改手柄颜色,您可以按照指定的方式进行 here 您可以使用样式
<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>
为了以编程方式检查同一个问题,另一个回复 here 使用反射
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_blue</item>
对您的 styles.xml 进行如下更改
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorControlHighlight">@color/accent_translucent</item>
<item name="android:colorControlHighlight">@color/accent_translucent</item>
<item name="colorAccent">@color/accent</item>
<item name="selectableItemBackground">@drawable/selectable_item_background</item>
<item name="android:selectableItemBackground">@drawable/selectable_item_background</item>
</style>
<color name="primary">#00BCD4</color>
<color name="primary_dark">#0097A7</color>
<color name="accent">#FFEB3B</color>
<color name="accent_translucent">#80FFEB3B</color>
<color name="accent_bright">#FFF493</color>
或者您可以将 XML 属性添加到您的 EditText
android:textColorHighlight="@color/accent_translucent"
希望它能解决您的问题。
绿色从何而来?我试过更改 accentColor
属性,该属性在应用程序的其他部分有效,但在此处无效。
如何更改颜色:
- 文本处理可绘制对象?如何给它们上色?
- select-全背景颜色?
也许还有一些对未来有用的建议...你是怎么知道的?我遇到过所有这些令人困惑的 color/styling 问题。某处是否有某种列表告诉我,我需要为某个组件覆盖哪种默认颜色或属性?
要更改手柄颜色,您可以按照指定的方式进行 here 您可以使用样式
<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>
为了以编程方式检查同一个问题,另一个回复 here 使用反射
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_blue</item>
对您的 styles.xml 进行如下更改
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorControlHighlight">@color/accent_translucent</item>
<item name="android:colorControlHighlight">@color/accent_translucent</item>
<item name="colorAccent">@color/accent</item>
<item name="selectableItemBackground">@drawable/selectable_item_background</item>
<item name="android:selectableItemBackground">@drawable/selectable_item_background</item>
</style>
<color name="primary">#00BCD4</color>
<color name="primary_dark">#0097A7</color>
<color name="accent">#FFEB3B</color>
<color name="accent_translucent">#80FFEB3B</color>
<color name="accent_bright">#FFF493</color>
或者您可以将 XML 属性添加到您的 EditText
android:textColorHighlight="@color/accent_translucent"
希望它能解决您的问题。