2010-05-24 4 views
12

У меня есть простое приложение для Android с 3 кнопками. Когда я нажимаю на 1-ю кнопку, я хочу изменить цвет фона макета (который теперь белый ... я хочу изменить другой цвет, когда я нажимаю кнопку). Как я могу это сделать?изменить цвет фона макета в Android

На этой кнопки, у меня есть событие myClickHndler

public void myClickHandler(View view) { 
    switch (view.getId()) { 
    case R.id.Button01: 
     text.setText("Button 1 was clicked"); 
     break; 
    case R.id.Button03: 
     //text.setText("Button 3 was clicked"); 
        .................... // ? 
     break; 
    } 
} 

Спасибо!

+0

жаль, когда я нажимаю на кнопку 3 я хочу изменить цвет, а не на 1-й кнопке .. Спасибо! – qwerty

ответ

23

Дайте идентификатор к вашему LinearLayout так:

<LinearLayout android:id="@+id/laidout" 
     ...> 

, а затем из вашего класса Java сказать:

... 
case R.id.Button03: 
//text.setText("Button 3 was clicked"); 
    .................... // ? 
mlayout= findViewById(R.id.laidout); 
// set the color 
mlayout.setBackgroundColor(Color.WHATEVER); 
// you can use setBackgroundResource() and pass appropriate ID 
// if you want a drawable bundled as resource in the background 
mlayout.setBackgroundResource(R.drawable.background_img); 
break; 
... 

[EDIT]: добавлен код вещи запрошенный в комментарии

+0

Хорошо, спасибо! И если я wanan изменил фон макета с .png-изображением, как я могу это сделать? Является ли это возможным? У меня есть png-изображение в папке res/drawable, и я хочу показать в качестве фона для макета. С уважением, – qwerty

+0

да, вы можете это сделать. Я добавил код в свой пост выше. Проверьте это. – Samuh

+0

В некоторых случаях это не работает. Призыв findViewById (R.id.laidout) выдает исключение RuntimeException, если оно сделано в пределах onCreate или onResume (не уверен в других местах). – 2010-12-05 23:46:16

3

Если вы хотите динамически менять фон, используйте

YourView.setBackgroundColor(Color.argb(255, 255, 255, 255)); 
0

Попробуйте следующий код ...

Код:

Resources res = getResources(); 
Drawable drawable = res.getDrawable(R.drawable.newImage); 
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.GameLayout); 
linearLayout.setBackgroundDrawable(drawable); 

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

1

setBackgroundDrawable осуждается

Попробуйте следующий простой код ...

Рабочий код:

LinearLayout linearLayout = (LinearLayout)findViewById(R.id.mainLayout); 
linearLayout.setBackgroundResource(R.drawable.backrepeat_blue); 

пользуются

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