¿Cómo establecer el color de fondo de una actividad en blanco mediante programación?

Respuestas:

142

Obtenga un identificador para el diseño raíz utilizado, luego configure el color de fondo en eso. El diseño raíz es lo que usted llamó 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));
Hamy
fuente
Cuando hago esto, Eclipse lo marca con "Debería pasar el color resuelto en lugar de la identificación del recurso aquí: getResources (). GetColor (android.R.color.red)".
joriki
25
Cambie la última línea aroot.setBackgroundColor(getResources().getColor(android.R.color.red));
Luis Mendo
Esta respuesta funciona; pero todavía no es completamente programático según el interrogador. Sugeriría la respuesta de Arunkumar a continuación.
KVISH
263

Agregue esta sola línea en su actividad, después de la setContentView()llamada

getWindow().getDecorView().setBackgroundColor(Color.WHITE);
Arunkumar
fuente
44
convenido. esto cambia el color de la ventana antes de aplicar el diseño raíz, la respuesta aceptada cambia el color del elemento raíz en el diseño de la actividad
LairdPleng
1
Creo que este debería ser el correcto, si solo desea establecer el color de fondo de la actividad.
shanwu
tiene mi +1 ya que cambia el color de la ventana raíz
mparkes
Esta es definitivamente la mejor respuesta
1QuickQuestion
Este es el método más fácil para hacerlo. En realidad mejor que uno aceptado!
Dinith
85

Prefiero colorear 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>
David
fuente
22
¿Cuál es la diferencia entre windowBackground y colorBackground?
AlikElzin-kilaka
1
Simplemente configure el fondo de la ventana y funciona bien. ¿De qué sirve colorBackground?
codezjx
8
@ AlikElzin-kilaka: la diferencia es que, cuando se inicia la aplicación, android:windowBackgroundse ve primero, por un breve momento, y luego el color de fondo del diseño se hace cargo. Entonces, si usa dos colores diferentes, parpadeará en la pantalla.
Ir al
2
windowBackgroundafecta solo al fondo de la ventana, pero también colorBackgroundafecta a todas las vistas. stackoverflow.com/questions/26266221/…
fdermishin
60
?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>

En otras palabras, "android: background" es la etiqueta en el XML que desea cambiar.

Si necesita actualizar dinámicamente el valor de fondo, consulte lo siguiente:

Ejercicio: cambiar el color de fondo, por SeekBar

I82Mucho
fuente
Mm buen punto. Bueno, independientemente, el enlace que le di a esa pregunta es bastante útil.
I82Mucho
¡No creo que me des los valores correctos para el color! Lo conseguí con #FFFFFF
SJS
Esta es una buena respuesta para aquellos de nosotros que queremos hacerlo en xml y llegamos aquí a través de una búsqueda en Google.
Kacy
9

En su onCreate()método:

getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));

También debe agregar a la carpeta de valores un nuevo archivo XML llamado color.xmly Asignar allí una nueva propiedad de color:

color.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>

Tenga en cuenta que puede nombrar el color.xmlnombre que desee, pero puede referirse a él por código comoR.color.yourId .

EDITAR

Como getResources().getColor()está en desuso, úselo en su getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color)); lugar.

Dios
fuente
8

Puede usar esto para invocar colores predefinidos de Android:

element.setBackgroundColor(android.R.color.red);

Si desea usar uno de sus propios colores personalizados, puede agregar su color personalizado a strings.xml y luego usar el siguiente para llamarlo.

element.setBackgroundColor(R.color.mycolour);

Sin embargo, si desea establecer el color en su layout.xml, puede modificar y agregar lo siguiente a cualquier elemento que lo acepte.

android:background="#FFFFFF"
Luke Alderton
fuente
Si utilizo la primera técnica, recibo una advertencia de que realmente debería accederse de esta manera: getResources (). GetColor (android.R.color.black);
3

Para obtener la vista raíz definida en su archivo xml, sin barra de acción, puede usar esto:

View root = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);

Entonces, para cambiar el color a blanco:

root.setBackgroundResource(Color.WHITE);
Kit Kat
fuente
3
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);

trabajó para mi. gracias.

Hemal Adani
fuente
Esta respuesta está en la cola de revisión de publicaciones de baja calidad porque es solo un código sin explicación. Mejore su respuesta explicando qué hace su código y cómo responde la pregunta. Lea atentamente este consejo para responder preguntas de programación .
Adi Inbar
2
Es curioso que esto establezca claramente el fondo en azul y no en blanco según lo solicitado.
Konrad Lindenbach
1
final View rootView = findViewById(android.R.id.content);
rootView.setBackgroundResource(...);
rds
fuente
1
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"));
        }
    });
}
Saleem Kalro
fuente