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

1

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

style="@style/ButtonNotSelected"

Место для

style="@style/ButtonSelected"

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

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

Теги:
android-studio

3 ответа

2
Лучший ответ

Будет лучше, если вы будете использовать 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>
0

это может помочь вам:

<style name="myStyle">
        <item name="android:textColor">#efefef</item>
        <item name="android:background">#ffffff</item>
        <item name="android:text">This is my button</item>
    </style>

а потом:

ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(context, R.style.myStyle);
btn= new Button(context);
0

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

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

ИЛИ ЖЕ

 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>
  • 0
    Привет, я не хочу создавать новую кнопку, я уже поместил кнопку в XML.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню