【发布时间】:2017-11-19 16:26:32
【问题描述】:
Xamarin Forms 上的按钮视图在部署到 Android 时似乎应用了额外的填充。我在我的 Android 项目下设置了 Resources/values/styles.xml,默认情况下所有间距、填充和边距都为 0,但仍然应用了额外的填充:
<item name="android:radius">0.0px</item>
<item name="android:shadowRadius">0.0</item>
<item name="android:spacing">0.0px</item>
<item name="android:padding">0.0px</item>
<item name="android:layout_margin">0.0px</item>
请看下面的比较,看看我在说什么(左边是 iOS,右边是 Android)。注意在 iOS 中视图是如何相互对齐的(它们应该是这样),而在 Android 中存在不必要的额外间隙。显示由绝对和堆栈布局、几个按钮和一个标签(长标签)的组合组成。不用担心 iOS 示例中的大小和排列不完美;这是故意的。 iOS 显示正是我希望它们看起来的样子。
理想情况下,我想要一种 Android 样式或简单的一刀切代码 sn-p,我可以使用它来摆脱 Android 固执己见的间距。边距、间距和填充在两个设备上以编程方式在视图上设置相同,因此这不应该是问题的根源。
请注意,我将 C# 与 Xamarin 表单一起使用,而不是 XAML。因此,请提供适用于两者的答案,或者至少可以通过 Xamarin Forms 的纯编程实现来工作。
这是另一个示例(左侧为 iOS,右侧为 Android)。最外面的布局是一个网格,包含六个非布局视图(两个按钮、两个标签和两个条目)以及底部的堆栈布局(同样包含一个按钮、一个标签和一个条目)。您可以从颜色的差异中看出,除了按钮之外,所有内容都正确排列。仅使用视图边距设置对齐方式;默认间距和填充全部归零(来自 Android 样式,见上文)。
【问题讨论】:
-
带有“额外填充”的视图是按钮,对吗?
-
请提供一些代码,以便我们重现此问题。
-
@apineda 这是一个很好的观点,我直到现在才注意到;它确实只适用于按钮。
-
@nbrosz 检查这个答案:stackoverflow.com/a/44578111/1771254
-
这个“问题”发生在 Android 中而不是在您的 Xamarin.Forms 代码中,因此您需要从 Android 项目中修复它。为此,您必须为您的按钮创建一个 CustomRenderer 并将默认样式更改为您自己的样式。注意:这是 Android 中的默认行为。
标签: c# android xamarin xamarin.android xamarin.forms