Как изменить значение атрибута стиля программно?

#java #android

#java #Android

Вопрос:

У меня есть кнопка, и я устанавливаю стиль из xml, теперь при нажатии кнопки я хочу изменить стиль, например

 style="@style/ButtonNotSelected"
 

Поместите в

 style="@style/ButtonSelected"
 

программно..

Пожалуйста, помогите ..!!!

Ответ №1:

Будет лучше, если вы будете использовать xml и селектор, чтобы ваша кнопка меняла цвет при ее нажатии, вы могли бы определить вызываемый XML-файл res/drawable/my_button.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>
 

Ответ №2:

попробуйте так:

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

или

  btn.setBackgroundResource(R.drawable.back_button_answer);
 resdrawableback_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>
 

Комментарии:

1. Привет, я не хочу создавать новую кнопку, я уже разместил кнопку в xml.