【问题标题】:How to change Entry cursor color in Xamarin.android如何在 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 项目名称默认设置为黑色,现在我变成了白色,但是当像这样运行项目时,所有条目光标颜色都变为白色,但随着光标,条目的颜色也变为白色。我的要求只是改变输入光标的颜色,其余的都是一样的。

【问题讨论】:

    标签: xamarin.android xamarin.forms


    【解决方案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:width="1dp" />
      <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-22
      • 2015-05-28
      • 1970-01-01
      • 2018-12-09
      • 2017-06-01
      • 2019-09-23
      • 2022-08-15
      • 1970-01-01
      相关资源
      最近更新 更多