需要应用一种样式来摆脱 Entry 上的底线

Need to apply a style for getting rid of bottom line on Entry

首先,我是 Xamarin Forms 的新手,请多关照。我需要摆脱在 Android 中为输入输入显示的底线。它在 iOS 中显示良好。我做了一些研究,发现这个:

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

应该通过简单地使下划线与输入框的背景颜色相同来达到目的。我已将此代码放在我的 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>

如果您在研究时没有看到这个,here is a solution 由 dkudelko 发布到 Github 如果您只是想删除下划线,这可能会更简单一些。

为此,只需在 Android 项目中创建一个 class 名为 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);
        }
    }
}

替换为您的应用程序名称后,您将创建一个自定义渲染器,该渲染器覆盖 Android 上的默认 Entry 以将控件背景颜色设置为透明。

Here is documentation 用于为 Entry.

创建自定义渲染器

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