按钮文本始终以大写显示
Button text always showing in uppercase
在我的 xamarin 表单项目按钮文本中始终以大写格式显示。
但是我在 xaml 中提供了大小写字母。当我构建解决方案时,所有字母都更改为大写。
我猜你在 Android 上看到了这个,因为它是按钮文本的默认设置,自 Lollipop 以来一直如此。
要更改此行为,请将以下内容添加到您的 styles.xml 文件中,该文件可以在 Android 项目中的 Resources then values folders
下找到
<item name="android:textAllCaps">false</item>
接受的答案假设用户(即使是新手)知道上面的代码采用哪种风格。甚至接受的答案下面的评论仍然未回答...我想知道为什么...
我刚开始学习 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>
截图:
最近我遇到了同样的问题,尽管我在我的样式中使用了 textAllCaps false。
它似乎不适用于 Xamarin.Forms 的 prerlease 版本 4.8.0.1238-pre3(发布本文时最新版本)。它确实适用于 Xamarin.Forms.
的 4.7.0.1239 版
另一种方法是简单地使用 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
没有为您显示,请清理并重建您的解决方案.
此问题的解决方案在 android 和 iOS 中适用于 material,以避免在设置 Visual 时自动转换为大写到“Material”。
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;
}
}
}
}
在我的 xamarin 表单项目按钮文本中始终以大写格式显示。
但是我在 xaml 中提供了大小写字母。当我构建解决方案时,所有字母都更改为大写。
我猜你在 Android 上看到了这个,因为它是按钮文本的默认设置,自 Lollipop 以来一直如此。
要更改此行为,请将以下内容添加到您的 styles.xml 文件中,该文件可以在 Android 项目中的 Resources then values folders
下找到<item name="android:textAllCaps">false</item>
接受的答案假设用户(即使是新手)知道上面的代码采用哪种风格。甚至接受的答案下面的评论仍然未回答...我想知道为什么...
我刚开始学习 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>
截图:
最近我遇到了同样的问题,尽管我在我的样式中使用了 textAllCaps false。 它似乎不适用于 Xamarin.Forms 的 prerlease 版本 4.8.0.1238-pre3(发布本文时最新版本)。它确实适用于 Xamarin.Forms.
的 4.7.0.1239 版另一种方法是简单地使用 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
没有为您显示,请清理并重建您的解决方案.
此问题的解决方案在 android 和 iOS 中适用于 material,以避免在设置 Visual 时自动转换为大写到“Material”。
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;
}
}
}
}