2017-10-16 3 views
3

Tout d'abord, je suis tout nouveau à Xamarin Forms alors soyez doux. Je dois me débarrasser de la ligne de fond qui montre pour l'entrée Entrée dans Android. Il s'affiche très bien dans iOS. Je l'ai fait quelques recherches et trouvé que ceci:Besoin d'appliquer un style pour se débarrasser de la ligne de fond sur l'entrée

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

devrait faire l'affaire par tout simplement faire le soulignement de la même couleur que la couleur de fond de la boîte d'entrée. J'ai placé ce code dans mon fichier styles.xml, mais je me sens comme je dois appliquer ce style quelque part, mais je ne suis pas sûr où. Toute aide pour un newb serait grandement appréciée.

Voici le fichier entier:

<?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> 
+0

S'il vous plaît, postez votre code styles.xml entier, afin que nous puissions voir si vous l'avez fait correctement. Le style par défaut est automatiquement défini par le modèle de projet pour les formulaires xamarin sur Visual Studio. –

+0

ok j'ai posté le fichier entier – Ryan

+0

Ainsi ai-je fait quelque chose de mal ??? – Ryan

Répondre

3

Si vous ne avez pas vu cela pendant que vous étiez des recherches, here is a solution affiché à Github par dkudelko ce qui est probablement un peu plus simple si vous essayez juste de supprimer le soulignement . Pour cela, créez simplement une classe dans votre projet Android appelé NoUnderlineEntry, puis ajoutez ce code.

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); 
     } 
    } 
} 

Après avoir remplacé le nom de votre application, vous aurez créé un moteur de rendu personnalisé qui remplace la valeur par défaut Entry sur Android pour définir la couleur d'arrière-plan de contrôle à la transparence.

Here is documentation pour créer des moteurs de rendu personnalisés pour Entry.

** Note: Je n'ai pas personnellement testé, mais plusieurs personnes ont commenté que cela fonctionne.

+0

Je ' m sur multiplateforme, pas Xamarin.Android donc à tout le moins les directives using ne fonctionnent pas et ExportRenderer non plus. J'ai essayé cela, mais je ne sais pas comment l'adapter à ma solution. – Ryan

+0

Si vous regardez l'explorateur de solutions dans VS, avez-vous plusieurs projets différents? Habituellement, dans Xamarin.Forms, il y a une bibliothèque de classes portable (PCL) où se trouve tout votre code partagé (pages, appels API, etc.), puis des projets de plate-forme individuels (App.Droid, App.iOS, etc.) . Avez-vous ces différents projets dans votre solution? – cvanbeek

+0

oui je fais. ma page de connexion est dans la partie partagée et mon styles.xml est dans la partie .Droid – Ryan