Android按钮样式编程

你如何以编程方式添加/删除样式到Android按钮? 是否可以在运行时应用样式?

我有两个看起来像这样的按钮

      ---------- ----------
     | 按钮A |  | 按钮B |
      ---------- ---------- 

我想要做的是当点击一个按钮(让我们说按钮B),它运行一些代码,然后将按钮B的样式更改为其他东西(即突出显示的边框),将是这样的:

      ---------- ==========
     | 按钮A |  || 按钮B ||
      ---------- ========== 

我知道如何在XML中进行样式设置(即创建样式),我想知道的是如何在运行时/使用java代码应用样式。

让我们为你做一些代码… :)为了动态地将样式应用到你的视图(在这种情况下是按钮),你必须在你的布局文件夹(res / layout)中执行以下操作。

我把它命名为buttonstyle.xml

                   

现在将样式应用于您的按钮,将以下代码添加到您的活动的onCreate()方法中。

 Button transferBtn = new Button(this); transferBtn.setText("Test Example"); transferBtn.setId(R.string.transferBtn); transferBtn.setBackgroundResource(R.layout.buttonstyle); 

您不能在运行时(从代码)应用xml定义的样式。 如果要在单击(按下)按钮时更改背景和字体样式,则应创建选择器 ,以定义用于普通按钮或单击状态的背景。

如果选择器不是您想要的,您应该通过按钮的Button类的setXXX方法手动将每个按钮属性设置为所需的值。

PS您可以将旧按钮换成另一个从xml充气的新按钮,具有不同的样式。 但这不是我认为的好方法……

正如我在另一个post中回答的那样,您可以像某些人建议的那样以编程方式设置背景,或者如果您使用支持库,则可以以编程方式设置样式(如我在此建议的那样)。