¿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));

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);

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>

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


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.


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"

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);

3
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);

trabajó para mi. gracias.


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(...);

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"));
        }
    });
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.