无法覆盖android 21下样式按钮的textAllCaps

时间:2014-10-23 15:54:59

标签: android layout android-5.0-lollipop

这就是我设置按钮的方式。

<Button
    android:id="@+id/button_login"
    style="@style/ButtonStyle"
    android:text="@string/button_login" />

这是我在values文件夹上的样式。

<style name="ButtonStyle" parent="ButtonStyleBase" />

<style name="ButtonStyleBase">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_marginTop">@dimen/padding</item>
    <item name="android:textSize">@dimen/font_regular</item>
    <item name="android:textColor">@color/text_regular</item>
    <item name="android:background">@drawable/shape_clickable</item>
</style>

这是我在values-v21文件夹

上的风格
<style name="ButtonStyle" parent="ButtonStyleBase">
    <item name="textAllCaps">false</item>
    <item name="android:textColor">#000000</item>
</style>

但是按钮上的文本总是大写的。如果我直接在按钮上设置它,它将恢复正常。我更改了颜色以查看是否正在使用api 21的样式,它是,api 21上的按钮文本颜色变为黑色。我知道默认主题将textAllCaps设置为按钮的真实,因为谷歌认为它会超级duper -cool,但不应该优先考虑我的风格吗?

编辑:从不,我忘了写&#34; android:&#34;在风格上。

4 个答案:

答案 0 :(得分:22)

我遇到了同样的问题,这对我有用:

<style name="Theme.CustomTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:textAppearanceButton">@style/CustomTheme.ButtonTextAppearance</item>
</style>

<style name="CustomTheme.ButtonTextAppearance" parent="@style/Base.TextAppearance.AppCompat.Button">
    <item name="textAllCaps">false</item>
    <item name="android:textAllCaps">false</item>
</style>

希望这有帮助。

答案 1 :(得分:0)

确保以下行在“textAllCaps”

之前没有说“android:”

<item name="textAllCaps" tools:targetApi="ice_cream_sandwich">false</item>

答案 2 :(得分:0)

你在values-v21文件夹上的样式是正确的

requests

但同时Api级别高于21你的风格粘贴在值-v19和样式文件夹xml

答案 3 :(得分:0)

styles.xml

在AppTheme中包含按钮样式(将在应用程序活动中使用)

<style name="MyButton" parent="Widget.AppCompat.Button">
        <item name="textAllCaps">false</item>
        <item name="android:textAllCaps">false</item>
    </style>

创建按钮样式

public class GlobalExceptionFilter : Microsoft.AspNetCore.Mvc.Filters.IExceptionFilter
{
    public void OnException(ExceptionContext context)
    {
        var telemetry = new TelemetryClient();
        var properties = new Dictionary<string, string> { { "custom-property1", "property1-value" } };
        telemetry.TrackException(context.Exception, properties);
    }
}

如果您发现任何问题,请告诉我。