2014-12-30 2 views
0

с учетом How to make the corners of a button round
Как сменить цвет фона программно?как изменить цвет кнопки пользовательского состояния программно

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:state_pressed="true" > 
<shape android:shape="rectangle" > 
    <corners android:radius="3dip" /> 
    <stroke android:width="1dip" android:color="#5e7974" /> 
    <gradient android:angle="-90" android:startColor="#345953" android:endColor="#689a92" />    
</shape> 
</item> 
<item android:state_focused="true"> 
<shape android:shape="rectangle" > 
    <corners android:radius="3dip" /> 
    <stroke android:width="1dip" android:color="#5e7974" /> 
    <solid android:color="#58857e"/>  
</shape> 
    </item> 
<item > 
<shape android:shape="rectangle" > 
    <corners android:radius="3dip" /> 
    <stroke android:width="1dip" android:color="#5e7974" /> 
    <gradient android:angle="-90" android:startColor="#8dbab3" android:endColor="#58857e" />    
</shape> 
</item> 
</selector> 
+0

почему нет, я хочу изменить начальный цвет и конечный цвет По пользователю выбрать цвета – Hamidreza

ответ

3

Вы должны сделать, как,

button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFAA0000)); 
+1

набора кнопок по умолчанию цвет на черный и: button.getBackground() setColorFilter (0xFFAA0000, PorterDuff.Mode.LIGHTEN);. – Hamidreza

0

Вы можете установить фоновый ресурс кнопки по setBackgroundResource методом ..

Предположим, что ваша кнопка bt и ваш XML-файл вытяжке button_bg.xml, то вы можете установить фон кнопки bt на ресурс, который можно выделить button_bg.xml программно, как показано ниже:

bt.setBackgroundResource(R.drawable.button_bg); 

Теперь, когда вы хотите установить начальный и конечный цвет макета вы хотите, выполните следующие:

View layout_bt = findViewById(R.id.layout_main);//Your layout consisting of the button bt 

GradientDrawable drawable_grad = new GradientDrawable(
     GradientDrawable.Orientation.TOP_BOTTOM, 
     new int[] {<start_color_here>,<end_color_here>}); //Set the start and end colors here 
drawable_grad.setCornerRadius(0f); 

layout_bt.setBackgroundDrawable(drawable_grad); 

Надеется, что это помогает!

+0

спасибо, но как изменить цвет кнопки в button_bg.xml – Hamidreza

+0

Обновлен мой ответ, пожалуйста, еще раз проверьте! –

+0

Метод бросил исключение «java.lang.NullPointerException». в layout_bt.setBackgroundDrawable (drawable_grad); – Hamidreza

Смежные вопросы