在我的应用中,用户可以查看他们制作的文档。它包括各种元素,包括按钮和 ToggleButtons 。 用户可以设置自定义主题,以更改TextViews / EditTexts中使用的字体和文本颜色以及布局的背景颜色。 所有这些元素都是在运行时生成的。
我想要的是使Buttons / ToggleButtons尊重用户选择的样式。我可以在运行时确定按钮所需的基本背景颜色,但是如果我使用 View.setBackGroundColor()它会变成一个扁平的彩色矩形,而我想保留边框/阴影效果,再加上按下时颜色会发生变化。即我希望它看起来和行为像一个按钮,只是涂上不同的颜色。
是否有可能获得我想要的东西,因为在应用程序运行之前,所需的实际颜色仍然未知?
答案 0 :(得分:3)
通常使用图像在Android中完成圆角,阴影效果等。请参阅此developer documentation以获取有关其工作原理的说明。
窗口小部件可以具有图像背景或纯色背景。因此,通过设置背景颜色,您将覆盖背景图像。如果您想在不丢失其他所有内容的情况下更改颜色,则需要编辑图像文件。
答案 1 :(得分:0)
通常,您无法以编程方式更改样式;您可以使用主题或样式设置XML布局中的屏幕外观或部分布局或单个按钮。但是,可以通过编程方式应用主题。
还有一个StateListDrawable这样的东西,它允许你为Button可以处于的每个状态定义不同的drawable,无论是聚焦,选择,按下,禁用等等。
例如,要让按钮在按下时更改颜色,您可以定义一个名为res / drawable / my_button.xml目录的XML文件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/btn_pressed" />
<item
android:state_pressed="false"
android:drawable="@drawable/btn_normal" />
然后,您可以通过设置属性
将此选择器应用于Buttonbtn.setBackground(drawable);