如何在 Xamarin.android 中更改条目光标颜色
Posted
技术标签:
【中文标题】如何在 Xamarin.android 中更改条目光标颜色【英文标题】:How to change Entry cursor color in Xamarin.android 【发布时间】:2017-08-28 10:24:39 【问题描述】:在我的应用程序中需要更改 xamarin.android 条目的默认颜色。在我的应用程序背景图像是黑色和 xamarin.android 条目的默认颜色也是相同的颜色,所以需要设置不同的颜色。请就此提出任何想法。我正在尝试闲置代码,但没有得到准确的结果。
在我的 xamarin.android 项目文件夹中包含值文件夹内的资源文件夹,我们有文件“styles.xml”文件。就是这样的样式标签内的项目名称'colorAccent'。
示例代码:
<style name="MainTheme.Base" parent="Theme.AppComa.Light.DarkActionBar">
<item name="colorAccent">#ffffff</item>
</style>
在 colorAccent 项目名称默认设置为黑色,现在我变成了白色,但是当像这样运行项目时,所有条目光标颜色都变为白色,但随着光标,条目的颜色也变为白色。我的要求只是改变输入光标的颜色,其余的都是一样的。
【问题讨论】:
【参考方案1】:如果您为活动指定主题,您还可以定义自定义主题并将 android:textCursorDrawable 设置为 @null。在这种情况下,光标颜色将与文本颜色相同。
这是我的工作值/Styles.xml 中的一个示例,请注意最后一个项目标签:
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<style name="Project.Main" parent="android:Theme.Holo.Light">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:fitsSystemWindows">true</item>
<item name="android:textCursorDrawable">@null</item>
</style>
</resources>
已编辑
如果您希望光标颜色与文本颜色不同,则需要创建 EntryRenderer。并将以下行放入 Renderer 类的 OnElementChanged
IntPtr IntPtrtextViewClass = JNIEnv.FindClass(typeof(TextView));
IntPtr mCursorDrawableResProperty = JNIEnv.GetFieldID (IntPtrtextViewClass, "mCursorDrawableRes", "I");
JNIEnv.SetField (Control.Handle, mCursorDrawableResProperty, 0); // replace 0 with a Resource.Drawable.my_cursor
【讨论】:
谢谢帕万。效果很好,但我想设置与文本颜色不同的颜色。当我在 null 的位置设置颜色代码时,它显示错误。我们如何在 textCursorDrawable 中设置自定义颜色。 @Deepak,我已根据您的要求更新了我的答案。希望对你有帮助。【参考方案2】:您可以通过在 Android 项目的“Resources\drawable”文件夹中添加 XML 文件来设置光标样式。
示例:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<size android: />
<stroke android:color="#FFFFFFFF"/>
</shape>
并在 Android 项目的“Resources\values”文件夹中引用 style.xml 中的文件。
示例:
<style name="MyTheme" parent="MyTheme.Base">
<item name="android:textCursorDrawable">@drawable/xml_file_name</item>
</style>
【讨论】:
以上是关于如何在 Xamarin.android 中更改条目光标颜色的主要内容,如果未能解决你的问题,请参考以下文章
NuGet 包安装失败“包还原失败。回滚 <xamarin.android> 的包更改”
向 Xamarin Android 添加新图像会更改所有其他图像