如何在 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 中更改条目光标颜色的主要内容,如果未能解决你的问题,请参考以下文章

防止 Xamarin Android 应用程序中的方向更改

NuGet 包安装失败“包还原失败。回滚 <xamarin.android> 的包更改”

向 Xamarin Android 添加新图像会更改所有其他图像

Xamarin.Android 使用Timer 并更改UI

Xamarin.Android 使用 ApkTool 编辑 apk 包名称导致崩溃

Xamarin.Android AndroidEnvironment文件未应用于更改GC Bridge实现