2016-05-19 3 views
1

У меня есть кнопка:Android: setBackgroundColor без удаления моей вытяжки

<Button 
    android:layout_width="60dp" 
    android:layout_height="wrap_content" 
    android:text="@string/male" 
    android:id="@+id/btn_mgen_m" 
    android:layout_gravity="center_horizontal" 
    android:background="@drawable/bg_tgl_btn_left" 
    android:textColor="#444444" /> 

и я изменил свой цвет, как это:

btnMgenM = (Button) findViewById(R.id.btn_mgen_m); 
btnMgenM.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     btnMgenM.setBackgroundColor(Color.parseColor("#dca8c3")); 
    } 
}); 

Цвет фона изменяется должным образом, но это, кажется, удалить фон вытяжка. Круглый радиус, цвет текста и граница удалены. осталась только простая цветная кнопка. Я хочу изменить цвет фона, когда я нажимаю эту кнопку, но ничего не меняю.

Как это сделать?

ответ

1

Попробуйте обе линии

btnMgenM.setBackgroundResource(0); 
btnMgenM.setBackgroundColor(Color.parseColor("#dca8c3")); 
+0

Я пробовал это. но форма кнопки (выделяемый фон) не удаляется. Я должен поддерживать форму/границу, но просто менять цвет фона – abend0

0

Вы можете сделать, как в следующем:

создать в вашем res/drawablebutton_style.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_focused="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/colorGreyFirst" /> 
     <corners android:radius="16dp" /> 
     <stroke 
      android:width="3dp" 
      android:color="@color/colorBlackTransparent" /> 
    </shape> 
</item> 

<item android:state_selected="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/colorGreyFirst" /> 
     <corners android:radius="16dp" /> 
     <stroke 
      android:width="3dp" 
      android:color="@color/colorBlackTransparent" /> 
    </shape> 
</item> 

<item android:state_pressed="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/colorGreyFirst" /> 
     <corners android:radius="16dp" /> 
    </shape> 
</item> 

<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/colorGrey" /> 
     <corners android:radius="16dp" /> 
     <stroke 
      android:width="3dp" 
      android:color="@color/colorGrey" /> 
    </shape> 
</item> 

и в вашем XML:

<Button 
android:layout_width="60dp" 
android:layout_height="wrap_content" 
android:text="@string/male" 
android:id="@+id/btn_mgen_m" 
android:layout_gravity="center_horizontal" 
android:background="@drawable/button_style" 
android:textColor="#444444" /> 

и в вашем color.xml вы можете указать свои цвета.

Или вы можете просто сделать так:

btnMgenM = (Button) findViewById(R.id.btn_mgen_m); 
btnMgenM.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     btnMgenM.setBackgroundColor(getResources().getColor(R.color.yourColor)); 

    } 
}); 

И добавить к вашей color.xml

<color name="yourColor"> #dca8c3</color> 

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

+0

Nice! хорошее предложение. но я должен изменить цвет фона программно, потому что какая-то кнопка должна быть цветной, а какая-то кнопка меняет цвет фона другой кнопки. Могу ли я изменить это состояние [действие] программно? – abend0

+0

Мое предложение работает для вас? –

+0

Я нашел его! Мне нужно было setPressed(), SetSelected(). благодаря – abend0