Android 需要应用一种样式,以便在输入时去掉底线

Android 需要应用一种样式,以便在输入时去掉底线,android,xamarin.forms,multiplatform,Android,Xamarin.forms,Multiplatform,首先,我是Xamarin的新手,所以请温柔一点。我需要去掉Android中显示的输入的底线。它在iOS中显示良好。我做了一些研究,发现: <style name="NoBaseline" parent="android:style/Widget.EditText"> <item name="android:background">#D3D3D3</item> </style> #D3 只需使下划线的颜色与输入框的背景色相同即可。我已经

首先,我是Xamarin的新手,所以请温柔一点。我需要去掉Android中显示的输入的底线。它在iOS中显示良好。我做了一些研究,发现:

<style name="NoBaseline" parent="android:style/Widget.EditText">
    <item name="android:background">#D3D3D3</item>
</style>

#D3
只需使下划线的颜色与输入框的背景色相同即可。我已经将这段代码放在了styles.xml文件中,但我觉得我需要在某个地方应用这段代码,但我不确定在哪里。对新手的任何帮助都将不胜感激

以下是整个文件:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <style name="MyTheme" parent="MyTheme.Base">
    </style>

    <style name="MyTheme.Base"
           parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="colorPrimary">#2196F3</item>
        <item name="colorPrimaryDark">#1976D2</item>
        <item name="colorAccent">#FF4081</item>
        <item name="windowActionModeOverlay">true</item>
        <item name="android:datePickerDialogTheme">@style/AppCompatDialogStyle</item>
    </style>

    <style name="NoBaseline" parent="android:style/Widget.EditText">
        <item name="android:background">#D3D3D3</item>
    </style>

    <style name="AppCompatDialogStyle" 
           parent="Theme.AppCompat.Light.Dialog">
        <item name="colorAccent">#FF4081</item>
    </style>

    <style name="Splash" parent ="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowDisablePreview">true</item>
    </style>
    <style name="MyTheme.Splash" 
           parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/splash_screen</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>
    </style>
</resources>

真的
假的
#2196F3
#1976D2
#FF4081
真的
@样式/应用程序对话框样式
#D3
#FF4081
真的
@可拉伸/飞溅屏幕
真的
真的

如果您在研究时没有看到这一点,请由dkudelko发布到Github,如果您只是想删除下划线,这可能会简单一些

要做到这一点,只需在Android项目中创建一个名为NoUnderlineEntry的类,然后添加以下代码

using <YourApp>.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;    

[assembly: ExportRenderer(typeof(Entry), typeof(NoUnderlineEntry))]
namespace <YourApp>.Droid
{
    public class NoUnderlineEntry : EntryRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
        {
            base.OnElementChanged(e);
            Control?.SetBackgroundColor(Android.Graphics.Color.Transparent);
        }
    }
}
使用.Droid;
使用Xamarin.Forms;
使用Xamarin.Forms.Platform.Android;
[assembly:ExportRenderer(typeof(Entry)、typeof(NoUnderlineEntry))]
名称空间.Droid
{
公共类NoUnderlineEntry:EntryRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
控件?.SetBackgroundColor(Android.Graphics.Color.Transparent);
}
}
}
替换为应用程序名称后,您将创建一个自定义渲染器,覆盖Android上的默认
条目
,以将控件背景色设置为透明

用于为
条目
创建自定义渲染器


**注意:我还没有亲自测试过它,但是有很多人评论说它是有效的。

请发布你的整个styles.xml代码,这样我们可以看看你是否做对了。默认样式是由visual studio上xamarin表单的项目模板自动设置的。好的,我发布了整个文件。我做错什么了吗?没有,一切都正常。我正在搜索是否可以将其放入
MyTheme
定义中,但我同意@cvanbeek的观点,即自定义渲染器是一种更简单的方法,对吧,我自己一直在尝试解决这个问题。在MyTheme.Base样式中添加了->@style/NoBaseline,但我在加载时遇到了一个错误“错误膨胀类android.support.v7.widget.FitWindowsFrameLayout”,不过我是在多平台上,而不是Xamarin.android上,所以至少使用指令不起作用,ExportRenderer也不起作用。我已经试过了,但不知道如何使其适应我的解决方案。如果您查看VS中的解决方案资源管理器,是否有多个不同的项目?通常在Xamarin.Forms中,有一个可移植类库(PCL),它是所有共享代码(页面、api调用等)的所在地,然后是单个平台项目(App.Droid、App.iOS等)。您的解决方案中是否有这些不同的项目?是的,我有。我的登录页面在共享部分中,my styles.xml在.Droid部分中。请确保将
NoUnderlineEntry
添加到.Droid部分。如果Intelissense显示错误并提出建议,则可能需要添加其他using语句。它起作用了。非常感谢你。我想我只是想把它放到我的共享项目文件夹中,这就是为什么它以前不起作用的原因。非常感谢。