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

时间:2018-05-24 12:11:40

标签: xamarin.forms xamarin.ios xamarin.android

在我的应用程序中,我想更改一个地方的Entry光标默认颜色。除此之外,首选默认光标颜色。

我可以使用Entry渲染器中的 Control.TintColor 更改ios光标颜色。

但是当我尝试使用styles.xml中的colorAccent项目(例如:#ffffff)更改android条目光标颜色时,它会更改所有位置的光标颜色,并且没有任何控制权。

在ios和android中是否有任何正确的方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

适用于Android自定义渲染器:

protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
    base.OnElementChanged(e);

    IntPtr IntPtrtextViewClass = JNIEnv.FindClass(typeof(TextView));
    IntPtr mCursorDrawableResProperty = JNIEnv.GetFieldID(IntPtrtextViewClass, "mCursorDrawableRes", "I");
    JNIEnv.SetField(Control.Handle, mCursorDrawableResProperty, Resource.Drawable.my_cursor);
}

my_cursorDrawable文件夹中定义,您可以尝试将其设为Shape

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

  // colorCursors is defined in the Resources/Colors file
  <solid android:color="@color/colorCursors"></solid>
  <size android:width="2dp" />

</shape>