在Xamarin Forms中更改EditText光标颜色

时间:2014-12-05 12:37:02

标签: xamarin xamarin.android xamarin.forms

我的Entry中有一个ContentPage,我正在使用Xamarin Android进行渲染。 这里我的问题是EditText背景颜色是白色,光标颜色也是白色。 在这里,我想将光标颜色更改为黑色。 有没有办法改变光标颜色? 这是我的代码。

输入ExtendedEntry:

public class ExtendedEntry : Entry { }

在内容页面中使用ExtendedEntry:

var txtPhoneNumber = new ExtendedEntry { Placeholder = "Phone Number", Keyboard = Keyboard.Numeric, TextColor = Color.Black };

在Xamarin Android中呈现ExtendedEntry:

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);
            }
        }
    }
}

任何人都可以帮我解决这个问题吗? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用以下方式更改光标颜色:

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保持相同的颜色。

答案 1 :(得分:-2)

编辑:要更改光标颜色,唯一的选择是通过添加例如:

来更改主题

主题=&#34; android:style / Theme.Holo.light&#34;在MainActivity中