tes*_*ing 11 button padding xamarin xamarin.forms
我想要一个小按钮.按钮的高度为30.在某些平台(Android,UWP)上,按钮内的文本被切断.那是因为文本和外边框之间有填充.
一种选择是使按钮更大,但文本有足够的空间.是否有设置内部填充的选项?
在Android上,您可以使用样式进行此操作。
资源/values-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>
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml
将自定义主题设置为应用程序主题。
<application android:label="$safeprojectname$" android:theme="@style/myTheme"></application>
Run Code Online (Sandbox Code Playgroud)
它将左右边距设置为0dp
。默认样式带有填充。
这适用于Android> =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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
一种选择是使用Label而不是Button,并使用TapGestureRecognizer而不是Click事件.Label使您可以更好地控制文本的布局而不是Button,但是您无法将其转换为每个平台上的本机按钮控件.
归档时间: |
|
查看次数: |
9708 次 |
最近记录: |