2016-05-09 11 views
8

Es scheint, dass das BorderRadius-Attribut nicht funktioniert, wenn AppCompat in dem Projekt einbezogen wird.Xamarin Border Radius AppCompat

Ich habe versucht, eine benutzerdefinierte machen zu schaffen, wie dies here diskutiert, aber es hat nicht funktioniert:

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

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

Im Android-Projekt:

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

Antwort

6

Sie ein Android laden drawable in Ihrem benutzerdefinierter Renderer zum Definieren des Hintergrunds auf Ihrem 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); 
      } 
     } 
    } 
} 

ein neues Resources/Drawable hinzufügen, die den Namen entspricht, die Sie bei der Verwendung sind Ihre SetBackgroundResource, in das ich einen Eckenradius des Rechtecks ​​als 10dp setze (dh 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

Also funktioniert die BorderRadius-Eigenschaft einfach nicht unter Android? –

0

Das stimmt, benutzerdefinierte Renderer für Button (und auch Picker, Switch, Frame usw.) werden nicht mit AppCompat aufgerufen.

Verbindung mit der Untersuchung: https://forums.xamarin.com/discussion/comment/180130/#Comment_180130

Link zu beschreiben, eine Lösung: http://www.isosoft.org/taoffi/post/2016/03/26/Xamarin-forms-so-you-lost-your-rounded-buttons (korrigiert Verbindungsfehler) Der Reiniger Weg ist von einem Knopf und das Einrichten eines benutzerdefinierten Renderer für geerbte Kontrolle zu übernehmen.