Respostas:
Identifique o layout raiz usado e defina a cor do plano de fundo. O layout raiz é o que você chamou de setContentView.
setContentView(R.layout.main);
// Now get a handle to any View contained
// within the main layout you are using
View someView = findViewById(R.id.randomViewInMainLayout);
// Find the root view
View root = someView.getRootView();
// Set the color
root.setBackgroundColor(getResources().getColor(android.R.color.red));
root.setBackgroundColor(getResources().getColor(android.R.color.red));
Adicione esta linha única em sua atividade, após a setContentView()
chamada
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
Eu prefiro colorir por tema
<style name="CustomTheme" parent="android:Theme.Light">
<item name="android:windowBackground">@color/custom_theme_color</item>
<item name="android:colorBackground">@color/custom_theme_color</item>
</style>
android:windowBackground
é visível primeiro, por um breve momento, e depois a cor do plano de fundo do layout assume o controle. Portanto, se você usar duas cores diferentes, ele piscará na tela.
windowBackground
afeta apenas o plano de fundo da janela, mas também colorBackground
afeta todas as visualizações. stackoverflow.com/questions/26266221/...
?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:id="@+id/myScreen"
</LinearLayout>
Em outras palavras, "android: background" é a tag no XML que você deseja alterar.
Se você precisar atualizar dinamicamente o valor em segundo plano, consulte o seguinte:
No seu onCreate()
método:
getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));
Além disso, você precisa adicionar à pasta de valores um novo arquivo XML chamado color.xml
e Atribuir uma nova propriedade de cor:
color.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>
Observe que você pode nomear o color.xml
nome que quiser, mas se refere a ele por código como R.color.yourId
.
EDITAR
Como getResources().getColor()
está obsoleto, use em seu getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color));
lugar.
Você pode usar isso para chamar cores android predefinidas:
element.setBackgroundColor(android.R.color.red);
Se você quiser usar uma de suas próprias cores personalizadas, poderá adicionar sua cor personalizada a strings.xml e, em seguida, usar o abaixo para chamá-lo.
element.setBackgroundColor(R.color.mycolour);
No entanto, se você quiser definir a cor em seu layout.xml, poderá modificar e adicionar o item abaixo a qualquer elemento que a aceite.
android:background="#FFFFFF"
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);
trabalhou para mim. obrigado.
Button btn;
View root;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
root =findViewById(R.id.activity_main).getRootView();
root.setBackgroundColor(Color.parseColor("#FFFFFF"));
}
});
}