我想要一个小按钮。按钮的高度为30.在某些平台(Android,UWP)上,按钮内的文本被切断。那是因为文本和外边框之间有填充。
一个选项是使按钮更大,但文本有足够的空间。是否有设置内部填充的选项?
答案 0 :(得分:7)
一种选择是使用Label而不是Button,并使用TapGestureRecognizer而不是Click事件。 Label使您可以更好地控制文本的布局而不是Button,但是您无法将其转换为每个平台上的本机按钮控件。
答案 1 :(得分:7)
在Android上,您可以使用样式进行此操作。
<强>资源/值-V21 / styles.xml 强>
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="myTheme" parent="android:Theme.Material">
<item name="android:buttonStyle">@style/noPaddingButtonStyle</item>
</style>
<style name="noPaddingButtonStyle" parent="android:Widget.Material.Button">
<item name="android:paddingLeft">0dp</item>
<item name="android:paddingRight">0dp</item>
</style>
</resources>
<强>的AndroidManifest.xml 强>
将自定义主题设置为应用程序主题。
<application android:label="$safeprojectname$" android:theme="@style/myTheme"></application>
它将左右边距设置为0dp
。默认样式有一个填充。
这适用于Android&gt; = 5.如果您想支持较低的Android版本,则必须添加多个样式文件夹并使用其他基本主题,例如Theme.Holo
或Theme.AppCompat
。
或者你去找渲染器:
using App6.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRenderer(typeof(Button), typeof(ZeroPaddingRenderer))]
namespace App6.Droid
{
public class ZeroPaddingRenderer : ButtonRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
Control?.SetPadding(0, Control.PaddingTop, 0, Control.PaddingBottom);
}
}
}
答案 2 :(得分:1)
除非您需要创建自定义渲染器来设置填充,否则您可以使用FontSize
来适应按钮HeightRequest
。
答案 3 :(得分:0)
现在Xamarin允许您在XAML中执行以下操作:
<Button.Padding>
<Thickness>0</Thickness>
</Button.Padding>
或在C#中:
Button button = new Button();
button.Text = "Button";
button.Clicked += OnClicked;
button.Padding = new Thickness(0, 0, 0, 0);