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

标签 android xamarin.forms multiplatform

首先,我是 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 项目中创建一个名为 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 创建自定义渲染器。

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

关于android - 需要应用一种样式来摆脱 Entry 上的底线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46777721/

相关文章:

Xamarin,如何为项目中的图像文件名生成常量?

android - 如何杀死子 Activity 并将 Activity 带到堆栈顶部

c# - 重启设备后出现图片

xamarin - 如何在xamarin表单中大写输入和选择器?

c# - xamarin 选择器控件 selectedindexchange 事件仅在完成选择项目时引发

windows - 适用于 Windows、Linux、MacOS X 的跨平台脚​​本

kotlin - Kotlin Cinterops native 库名称

c# - 在 View 之间传递数据的最佳方式是什么?

android - React Native构建失败任务:app:processReleaseResources失败执行aapt失败

android - 找到 edittext 自定义 ListView