更改Xamarin形式的EditText光标颜色
问题描述:
我在ContentPage
中有一个Entry
,并在Xamarin Android中进行渲染。 这里我的问题是EditText
背景颜色是白色的,游标颜色也是白色的。 这里我想将光标颜色改为黑色。 有什么方法可以改变光标颜色吗? 这是我的代码。更改Xamarin形式的EditText光标颜色
进入到ExtendedEntry:
public class ExtendedEntry : Entry { }
使用ExtendedEntry在内容页:
var txtPhoneNumber = new ExtendedEntry { Placeholder = "Phone Number", Keyboard = Keyboard.Numeric, TextColor = Color.Black };
渲染ExtendedEntry在Xamarin的Android:
using Xamarin.Forms.Platform.Android;
using Xamarin.Forms;
[assembly: ExportRenderer(typeof(ExtendedEntry), typeof(ExtendedEntryRender))]
namespace Project.Droid
{
public class ExtendedEntryRender : EntryRenderer
{
// Override the OnElementChanged method so we can tweak this renderer post-initial setup
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (e.OldElement == null)
{ // perform initial setup
// lets get a reference to the native control
var nativeEditText = (global::Android.Widget.EditText)Control;
// do whatever you want to the textField here!
nativeEditText.SetBackgroundResource(Resource.Drawable.text_box);
}
}
}
}
任何人都可以帮我解决这个问题吗? 在此先感谢。
答
编辑:要改变cursur颜色的唯一选择是加入例如更改主题:在MainActivity
:“风格/ Theme.Holo.light机器人”
答
您可以更改
主题=光标颜色使用:
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
0将保持与Entry上的TextColor颜色相同。
您可以将此处指出的代码与平台效果结合使用,以避免创建派生类 – Dbl 2016-11-02 16:44:03