2016-10-11 15 views
1

私はグリッドを持っているボタンのセットが含まれています。グリッドのcolumnSpacingを0に設定しましたが、ボタン間に余裕があります。私はそのボタンコントロールを前提としていました。ボタンの余白を0にしても、結果は同じです。Xamarinフォーム:グリッド内のボタンに余白があります。その余白を取り除く方法

私はboxViewを使用できません。テキストとクリック可能なものが必要です。

答えて

0

問題は、アンドロイドボタンに余白を持つデフォルトのバックグラウンドドロワブルがあることです。カスタムレンダラーを使用して削除できます。 Xamarin.Forms custom renderer

例:

using System; 
using test.Droid; 
using Xamarin.Forms; 
using Xamarin.Forms.Platform.Android; 

[assembly: ExportRenderer(typeof(Button), typeof(DefaultButtonRenderer))] 
namespace test.Droid 
{ 
    public class DefaultButtonRenderer: ButtonRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Button> e) 
     { 
      base.OnElementChanged(e); 

      // Control is Android.Widget.Button, Element is Xamarin.Forms.Button 
      if (Control != null && Element != null) 
      { 
       // remove default background image 
       Control.Background = null; 

       // set background color 
       Control.SetBackgroundColor(Element.BackgroundColor.ToAndroid()); 
      } 
     } 

     protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) 
     { 
      base.OnElementPropertyChanged(sender, e); 

      if (e.PropertyName == "BackgroundColor") 
      { 
       // You have to set background color here again, because the background color can be changed later. 
       Control.SetBackgroundColor(Element.BackgroundColor.ToAndroid()); 
      } 
     } 
    } 
} 

このコードは、ボタンクリック効果を削除します。エフェクトを残したい場合は、Control.Backgroundを適切なリソースに設定する必要があります。 (例:Android.Resource.Attribute.SelectableItemBackground)

また、TapGestureRecognizerというラベルを使用することもできます。任意のビューにTapGestureRecognizerを追加できます。

関連する問題