我正在尝试设置EditText Hint Typeface 我发现很少有来自android的解决方案,但无法在Xamarin Android中实现它们
其中一位是:
LayoutInflater inflater = LayoutInflater.From(Application.Context);
TextView hintTextView = (TextView)inflater.Inflate(com.android.internal.R.layout.textview_hint, null);
hintTextView.SetTypeface(typeface);
但我找不到内部资源
com.android.internal.R.layout.textview_hint
正如我所看到的提示只是TextView。是否可以在应用主题中设置其样式? https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/textview_hint.xml
另一种解决方案可以是本主题的反思 Android EditText hint uses the same font that the EditText has
但我无法获得mHintLayout
var mail = FindViewById<EditText>(Resource.Id.email_input);
Field hintLayoutField = mail.Class.GetDeclaredField("mHintLayout");
答案 0 :(得分:2)
我正在使用反射来设置提示字体,但我现在使用Calligraphy
项目已经有一段时间了,并且效果很好,最好的是,它会自动处理...; - )
安装Calligraphy
软件包后,您只需分配新 fontPath
属性:
<TextView
android:editable="true"
fontPath="BalooBhaina-Regular.ttf"
android:hint="StackOverflow Hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Calligraphy
有一个基于公共/ Nuget的Xamarin绑定:
在您的反思示例中,您可以使用com.android.internal.R.layout.textview_hint
Resources.GetIdentifier
等内部项的资源ID
示例:
int id = Resources.GetIdentifier("textview_hint", "layout", "android");
TextView hintTextView = (TextView)inflater.Inflate(id, null);
hintTextView.SetTypeface(typeface);