我在Android
上创建Xamarin.Forms
应用程序,我试图改变控制下面的行的颜色。是否有可能改变下面的行的颜色/文本框的边界
我有一个Entry
控制,像这样:
<Entry Text="new cool street"/>
我想这Entry
从默认线下的颜色改变白色更紫色的搭配我的主题。
Idealy倒不如采用Android样式,因为这将适用于从Entry
如果可能的话
继承这是可能做到所有的控制呢?
我在Android
上创建Xamarin.Forms
应用程序,我试图改变控制下面的行的颜色。是否有可能改变下面的行的颜色/文本框的边界
我有一个Entry
控制,像这样:
<Entry Text="new cool street"/>
我想这Entry
从默认线下的颜色改变白色更紫色的搭配我的主题。
Idealy倒不如采用Android样式,因为这将适用于从Entry
如果可能的话
继承这是可能做到所有的控制呢?
您可以使用自定义渲染器会影响到所有的条目,
这里是为Android:
[assembly: ExportRenderer(typeof(Entry), typeof(MyEntryRenderer))]
namespace Android.MyRenderers
{
public class MyEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control == null || e.NewElement == null) return;
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
Control.BackgroundTintList = ColorStateList.ValueOf(Color.White);
else
Control.Background.SetColorFilter(Color.White, PorterDuff.Mode.SrcAtop);
}
}
}
和iOS:
[assembly: ExportRenderer (typeof(Entry), typeof(MyEntryRenderer))]
namespace iOS.MyRenderers
{
public class MyEntryRenderer : EntryRenderer
{
private CALayer _line;
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged (e);
_line = null;
if (Control == null || e.NewElement == null)
return;
Control.BorderStyle = UITextBorderStyle.None;
_line = new CALayer {
BorderColor = UIColor.FromRGB(174, 174, 174).CGColor,
BackgroundColor = UIColor.FromRGB(174, 174, 174).CGColor,
Frame = new CGRect (0, Frame.Height/2, Frame.Width * 2, 1f)
};
Control.Layer.AddSublayer (_line);
}
}
}
不知道这个
简单: 编辑您的RES /价值/ colors.xml为: #303F9F
您可以将任何十六进制颜色代码代替#303F9F
<color name="colorPrimaryDark">#303F9F</color>
的Windows解决方案,如果您使用的是Xamarin形式,去Mobile.Droid,资源,价值观和对“您Colur”,它会工作。
我有同样的问题,只是在styles.xml改变colorAccent
值(Xamarin.Android项目)将改变光标的颜色和Entry
场的底部边框。
<item name="colorAccent">#BA55D3</item>
相同aproch它看起来像只有当控件具有焦点时才会改变颜色。 – CodeGrue
因为我有一个背景色并与另一个对话框中的内容页面,使用样式指定底部栏的颜色是完全错误的答案。而且由于OP只问Android,这只是Android ...
我使用自定义渲染器来设置底部栏颜色与文本颜色相同。必须同时使用ElementChanged和PropertyChanged。
[assembly: ExportRenderer(typeof(Xamarin.Forms.Entry), typeof(CustomEntryRenderer))]
namespace XamFormsConnect.Droid
{
public class CustomEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Entry> e)
{
base.OnElementChanged(e);
if (Control != null && e.NewElement != null)
{
var entry = (Xamarin.Forms.Entry)e.NewElement;
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
Control.BackgroundTintList = ColorStateList.ValueOf(entry.TextColor.ToAndroid());
else
Control.Background.SetColorFilter(entry.TextColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
}
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == "TextColor")
{
var entry = (Xamarin.Forms.Entry)sender;
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
Control.BackgroundTintList = ColorStateList.ValueOf(entry.TextColor.ToAndroid());
else
Control.Background.SetColorFilter(entry.TextColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
}
}
}
}
我喜欢这个答案如何使用TextColor属性,而不是像接受的答案那样硬编码“白色”。 – CodeGrue
User android styles。 '- @ android:color/yourcolour
' –
@AkashAmin'colorAccent'只有在'TextBox'被关注时才会使用。我正在寻找当'TextBox'未聚焦时更改线条颜色 – user1
[如何更改Xamarin.Forms中Entry的边框颜色]的可能重复(http://stackoverflow.com/questions/37822668/how-to-change -border-color-of-entry-in-xamarin-forms) –