Xamarin表单:按钮文本始终以大写字母显示

时间:2017-11-29 04:59:32

标签: xamarin.forms

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

5 个答案:

答案 0 :(得分:19)

我猜你在Android上看到这个,因为它是按钮文本的默认设置,并且自从棒棒糖以来就一直存在。

要更改此行为,请将以下内容添加到styles.xml文件中,该文件可在“资源”下的“Android项目”文件夹中找到

[
  { “Name”, “Alan”, “Mobile ” : “0000000000”},
  { “Name”, “Milan”, “Mobile” : “0000000001”, “Email ” : “test@test.com” }
]

答案 1 :(得分:8)

接受的答案假设用户(甚至是新手)都知道上面的代码采用哪种样式。即使接受的答案下面的注释仍然未回答 ...我不知道为什么... < / p>

我刚刚开始学习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>

截屏:

答案 2 :(得分:7)

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

答案 3 :(得分:6)

一种替代方法是仅使用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}"/>

重要说明

如果未显示TextTransform而不是清理并重建解决方案,请确保使用Xamarin.Forms NuGet软件包 4.8.0.1534 或更高版本。

答案 4 :(得分:0)

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

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;
            }
        }
    }
}