Android按钮样式编程

iba*_*uio 4 java android button android-layout

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

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

     ----------   ----------
    | Button A | | Button B |
     ----------   ----------

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

     ----------    ==========
    | Button A | || Button B ||
     ----------    ==========

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

rid*_*doy 12

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

我把它命名为buttonstyle.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <shape>
            <solid android:color="#449def"/>
            <stroke android:width="1dp" android:color="#2f6699"/>
            <corners android:radius="3dp"/>
            <padding android:left="10dp" android:top="10dp" android:right="10dp"
                     android:bottom="10dp"/>
        </shape>
    </item>

    <item>
        <shape>
            <gradient android:startColor="#449def" android:endColor="#2f6699" android:angle="270"/>
            <stroke android:width="1dp" android:color="#2f6699"/>
            <corners android:radius="4dp"/>
            <padding android:left="10dp" android:top="10dp" android:right="10dp"
                     android:bottom="10dp"/>
        </shape>
    </item>

</selector>
Run Code Online (Sandbox Code Playgroud)

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

Button transferBtn = new Button(this);
transferBtn.setText("Test Example");
transferBtn.setId(R.string.transferBtn);
transferBtn.setBackgroundResource(R.layout.buttonstyle);
Run Code Online (Sandbox Code Playgroud)