如何以编程方式更改样式属性值?

时间:2019-04-17 09:16:47

标签: java android

我有按钮,单击按钮后我现在就从xml设置样式,我想更改样式

style="@style/ButtonNotSelected"

放置位置

style="@style/ButtonSelected"

以编程方式..

请帮助.. !!!

2 个答案:

答案 0 :(得分:2)

最好使用xml和选择器,以使按钮在按下时改变颜色,您可以定义一个名为res/drawable/my_button.xml的XML文件。

设置 my_button.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/button_pressed" />
  <item
    android:state_pressed="false"
    android:drawable="@drawable/button_normal" />
</selector>

@drawable/button_pressed 类似的东西:

<?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>
</selector>

@drawable/button_normal 类似的东西:

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

答案 1 :(得分:0)

尝试这样:

 ContextThemeWrapper newContext = new ContextThemeWrapper(baseContext, R.style.MyStyle);
 Button button = new Button(newContext);

OR

 btn.setBackgroundResource(R.drawable.back_button_answer);
 \res\drawable\back_button_answer.xml
<?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="rectangle" >
 <corners android:radius="10dip" />
 <!-- background -->

   <gradient
            android:startColor="#D6D7D6"
            android:centerColor="#E2E2E2"
            android:centerY="0.75"
            android:endColor="#D6D7D6"
            android:angle="270"
    />

   <stroke android:width="2dip" android:color="#fff"/>
   </shape>