如何在Xamarin.android中更改Entry光标颜色

时间:2017-08-28 10:24:39

标签: xamarin.android xamarin.forms

在我的应用程序中需要更改xamarin.android条目的默认颜色。在我的应用程序中,背景图像是黑色的,并且xamarin.android中的条目默认颜色也是相同的颜色,因此需要设置不同的颜色。请提出任何想法。我正在尝试暂停代码,但我没有得到确切的结果。

在我的xamarin.android项目文件夹中包含values文件夹内的资源文件夹,我们有文件' styles.xml'文件。这是项目名称' colorAccent'像这样的内部样式标签。

示例代码:

 <style name="MainTheme.Base" parent="Theme.AppComa.Light.DarkActionBar">
   <item name="colorAccent">#ffffff</item>
 </style>

在colorAccent项目名称默认设置为黑色,现在我改为白色但是当像这样运行项目时所有输入光标颜色变为白色但是用光标,条目的颜色也变为白色。我的要求只是改变条目光标的颜色,剩下的是相同的。

2 个答案:

答案 0 :(得分: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>

<强> EDITED

如果您希望将不同的光标颜色添加到文本颜色,则需要创建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

答案 1 :(得分:0)

您可以通过在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:width="1dp" />
  <stroke android:color="#FFFFFFFF"/>
</shape>

并在style.xml中的“Resources \ values”文件夹中引用style.xml中的文件。

示例:

<style name="MyTheme" parent="MyTheme.Base">
  <item name="android:textCursorDrawable">@drawable/xml_file_name</item>
</style>