2016-05-09 12 views
8

Sembra che l'attributo BorderRadius non funzioni quando si include AppCompat nel progetto.Xamarin Border Radius AppCompat

Ho cercato di creare un rendering personalizzato come questo discusso here, ma non ha funzionato:

namespace Xamarin.Forms 
{ 
    public class CustomButton : Button 
    { 
     public CustomButton():base() 
     { 
     } 

     protected override void OnParentSet() 
     { 
      base.OnParentSet(); 
     } 
    } 
} 

Nel progetto Android:

[assembly: ExportRenderer(typeof(CustomButton), typeof(CustomButtonRenderer))] 
namespace CalculateurMadelin.Droid.Renderers 
{ 
     public class CustomButtonRenderer : Xamarin.Forms.Platform.Android.AppCompat.ButtonRenderer 
    { } 
} 

risposta

6

È possibile caricare un Android drawable nella vostra renderizzatore personalizzato per definire lo sfondo sul tuo AppCompat.Button:


[assembly: ExportRenderer(typeof(CustomButton), typeof(CustomButtonRenderer))] 
namespace AppCompatRender.Droid 
{ 
    public class CustomButtonRenderer : Xamarin.Forms.Platform.Android.AppCompat.ButtonRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Button> e) 
     { 
      base.OnElementChanged(e); 
      if (e.OldElement == null) 
      { 
       Control.SetBackgroundResource(Resource.Drawable.CustomButtonBackground); 
      } 
     } 
    } 
} 

Aggiungi un nuovo Resources/Drawable che corrisponde al nome che si sta utilizzando nel vostro SetBackgroundResource, in questo io pongo un raggio angolo del rettangolo come 10dp (cioè CustomButtonBackground.axml.):

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <corners android:radius="10dp" /> 
</shape> 

enter image description here

+1

Quindi la proprietà BorderRadius non funziona su Android? –

0

Questo è vero, i renderer personalizzati per Button (e anche Picker, Switch, Frame ecc.) Non vengono chiamati con AppCompat.

collegamento con l'inchiesta: https://forums.xamarin.com/discussion/comment/180130/#Comment_180130

link che descrive una soluzione: http://www.isosoft.org/taoffi/post/2016/03/26/Xamarin-forms-so-you-lost-your-rounded-buttons (errore di collegamento corretto) Il modo più pulito è quello di ereditare da un pulsante e impostare un renderer personalizzato per il controllo ereditato.

Problemi correlati