Android的API 21改变了我的自定义按钮的背景 [英] Android API 21 changes my custom button background

查看:166
本文介绍了Android的API 21改变了我的自定义按钮的背景的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我测试了我的应用程序为API21在Android上!不幸的是,我的按钮看起来怪异 - 有某种背景颜色的补充。背景图像没有改变 - 它们是除了边界完全透明的。 (不同的文字和大小是由于截图)。

http://imgur.com/9EEcl0o,yVEnJkI:

在这里,您之前和之后21 API看到的按钮#0

我已经尝试过机器人:海拔=0dp和a​​ndroid:背景=@机器人:彩色/透明。任何人都知道为什么我的按钮改变?非常感谢你!

layout.xml:

 <按钮机器人:ID =@ + ID / sm_achievements_btn
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =0dp
    机器人:layout_weight =1.1
    机器人:背景=@绘制/ menu_btn_selector
    安卓的onClick =showAchievements
    机器人:文字=@字符串/ sm_achievements_btn
    机器人:填充=@扪/ padding_std
    机器人:layout_marginTop =@扪/ margin_small
    机器人:文字颜色=@彩色/ BUTTON_TEXT
    机器人:TEXTSIZE =@扪/ text_xlarge
    风格=@风格/ lbm_button/>

menu_btn_selector.xml:

 <项目机器人:可绘制=@绘制/ menu_button
 机器人:STATE_ pressed =FALSE/>

style.xml:

 <样式名称=lbm_button父=机器人:Theme.Holo.Light>
    <项目名称=机器人:textAllCaps>假LT; /项目>
< /风格>


解决方案

材质的按钮有一个默认的stateListAnimator,提供基于状态的标高(如0dp禁用时,启用时1DP)。您可以通过设置机器人清除:在你的风格,或直接在按钮stateListAnimator =@空

下面是什么样子在按钮XML:

 <按钮机器人:ID =@ + ID / sm_achievements_btn
    ...
    机器人:textAllCaps =假
    机器人:stateListAnimator =@空/>

此外,你使用了错误的父母为你的按钮样式。你不应该设置一个主题作为母公司的一个小部件的风格。无论如何,这里要说的是应该是什么样子,如果你preFER这条路线:

 <按钮机器人:ID =@ + ID / sm_achievements_btn
    ...
    风格=@风格/ MyButtonStyle/><样式名称=MyButtonStyle父=机器人:Widget.Material.Light.Button>
    <项目名称=机器人:textAllCaps>假LT; /项目>
    <项目名称=机器人:stateListAnimator> @空< /项目>
< /风格>

I am testing out my app for API21 on Android! Unfortunately, my buttons seem weird - there is some kind of background color added. The background images did not change - they are completely transparent except for the border. (The different text and size is due to the screenshot).

Here you see the buttons before and since API 21: http://imgur.com/9EEcl0o,yVEnJkI#0

I already tried android:elevation="0dp" and android:background="@android:color/transparent". Anybody knows why my buttons change? Thank you very much!

layout.xml:

<Button android:id="@+id/sm_achievements_btn"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1.1"   
    android:background="@drawable/menu_btn_selector"
    android:onClick="showAchievements"
    android:text="@string/sm_achievements_btn"
    android:padding="@dimen/padding_std"
    android:layout_marginTop="@dimen/margin_small"
    android:textColor="@color/button_text"
    android:textSize="@dimen/text_xlarge"
    style="@style/lbm_button"/>

menu_btn_selector.xml:

<item android:drawable="@drawable/menu_button"
 android:state_pressed="false"/>

style.xml:

<style name="lbm_button" parent="android:Theme.Holo.Light">
    <item name="android:textAllCaps">false</item>
</style>

解决方案

Material buttons have a default stateListAnimator that provides state-based elevation (e.g. 0dp when disabled, 1dp when enabled). You can clear it by setting android:stateListAnimator="@null" in your style or directly on the Button.

Here is what that would look like on your button XML:

<Button android:id="@+id/sm_achievements_btn"
    ...
    android:textAllCaps="false"
    android:stateListAnimator="@null" />

Also, you're using the wrong parent for your button style. You should never set a theme as the parent for a widget style. Regardless, here is what that should look like if you prefer that route:

<Button android:id="@+id/sm_achievements_btn"
    ...
    style="@style/MyButtonStyle" />

<style name="MyButtonStyle" parent="android:Widget.Material.Light.Button">
    <item name="android:textAllCaps">false</item>
    <item name="android:stateListAnimator">@null</item>
</style>

这篇关于Android的API 21改变了我的自定义按钮的背景的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆