27

在我的 xamarin 表单中,项目按钮文本始终以大写格式显示。
但我在 xaml 中提供大写和小写字母。当我构建解决方案时,所有字母都更改为大写。

4

5 回答 5

43

我猜你会在 Android 上看到它,因为它是按钮文本的默认设置,并且自 Lollipop 以来一直如此。

要更改此行为,请将以下内容添加到您的 styles.xml 文件中,该文件可以在 Android 项目中的 Resources then values 文件夹下找到

<item name="android:textAllCaps">false</item>
于 2017-11-29T05:40:42.777 回答
14

另一种方法是简单地使用TextTransform属性:

<Button Text="Click Me" TextTransform="None"/>

或者在样式定义中:

<Style TargetType="Button" x:Key="NoDefaultCapsButton">
     <Setter Property="TextTransform" Value="None"/>
</Style>

<Button Text="Click Me" Style="{x:StaticResource NoDefaultCapsButton}"/>

重要的提示

确保您使用的是 Xamarin.Forms NuGet 包4.8.0.1534或更高版本,如果TextTransform没有显示,则清理并重建您的解决方案。

于 2020-10-26T19:52:29.100 回答
12

接受的答案假设用户(甚至是新手)知道上面的代码采用哪种风格。即使接受答案下面的评论仍然没有得到答复......我想知道为什么......

我刚开始学习 Android Xamarin 编程,我花了 20 分钟来搞清楚。对于任何用户,特别是新手,请参阅此示例。

在您的 Android 项目中,转到Resources> values>styles.xml并添加:

<style name="MyTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:textAppearanceButton">@style/mybutton.text</item>
</style>

<style name="mybutton.text" parent="Base.TextAppearance.AppCompat.Button">
    <item name="android:textAllCaps">false</item>
</style>

截屏:

于 2020-05-09T21:35:45.620 回答
7

最近我遇到了同样的问题,即使我在我的样式中使用了 textAllCaps false。似乎它不适用于 Xamarin.Forms 的预发布版本 4.8.0.1238-pre3(发布此内容时的最新版本)。它确实适用于 Xamarin.Forms 版本 4.7.0.1239。

于 2020-08-04T16:41:35.907 回答
0

此问题的解决方案适用于我在 android 和 iOS 中的材料,以避免在Visual设置为“材料”时自动进行大写转换。

Xamarin.Forms.Android:

<style name="MainTheme" parent="MainTheme.Base">
    <item name="android:textAllCaps">false</item>
</style>

Xamarin.Forms.iOS:

[assembly: ExportRenderer(typeof(Button), typeof(ButtonRendererEx), new[] { typeof(VisualMarker.MaterialVisual) })]
namespace GettingStarted.iOS
{
    public class ButtonRendererEx : MaterialButtonRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                Control.UppercaseTitle = false;
            }
        }
    }
}
于 2020-11-10T20:00:49.500 回答