AppCompat v23中的按钮背景色无法设置的问题

6

我尝试使用AppCompat v23来实现完整的按钮颜色控制,使用BackgroundTint。

我已经在我的应用程序build.gradle文件中添加了compile 'com.android.support:appcompat-v7:23.0.+'

我已经在AndroidManifest.xml中将我的应用程序主题设置为android:theme="@style/AppTheme"

在styles.xml中,我有:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
    </style>
</resources>

我并不想覆盖任何东西,我只是想让基础主题正常工作。

在我的主活动声明中,我使用了public class LandingActivity extends AppCompatActivity

最后,在布局中,我使用android:backgroundTint来设置colors.xml中的颜色。

在运行5.0的设备上,颜色完美地工作。在4.0设备上,按钮没有着色。它是默认灰色的。

我确定我错过了什么,但我不知道是什么。 是否有其他步骤需要执行以使AppCompat库发挥其魔力?


简单来说,backgroundTint是在API21(5.0)中添加的。 - natario
1
目前完整的支持着色器的小部件列表如下:
  • AppCompatButton
- Nathan Tornquist
1
@Nathan 这并不意味着它从 XML 布局中读取属性。在 4.0 上,它永远无法读取 android:backgroundTint,因为它没有被实现。将来(我不认为现在有)我们可能能够使用 app:backgroundTint,但不能使用 android:tint aware 的意思是它从你在样式中设置的颜色属性中选择自己的颜色。我不记得哪种颜色决定了按钮背景,但你可以尝试使用 colorControlNormalcolorAccentcolorPrimary 等。 - natario
1
@Nathan 进行了一些研究,发现 appcompat 的 v23 版本还引入了 app:backgroundTint 属性。因此请将 android:backgroundTint 改为 app:backgroundTint(系统会提示你导入命名空间)。 - natario
我已经设置了应用程序命名空间xmlns:app="http://schemas.android.com/apk/res-auto",你能告诉我你正在查看什么吗? - Nathan Tornquist
显示剩余4条评论
1个回答

13

与其使用 <Button android:backgroundTint="~" />

建议使用 <android.support.v7.widget.AppCompatButton xmlns:app="http://schemas.android.com/apk/res-auto" app:backgroundTint="~"/>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接