cambiar - colorear un jlabel java
¿Cómo establecer el color de fondo de una actividad en blanco mediante programación? (11)
Agregue esta única línea en su actividad, después de la llamada setContentView()
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
¿Cómo puedo configurar el color de fondo de una actividad en blanco programáticamente?
En su método onCreate()
:
getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));
También necesita agregar a la carpeta de valores un nuevo archivo XML llamado color.xml
y color.xml
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 color.xml
nombre que desee a color.xml
, pero se lo refiere por código como R.color.yourId
.
EDITAR
Como getResources().getColor()
está en desuso, use getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color));
en lugar.
Estaba teniendo un problema similar y seguí los pasos mencionados en las respuestas dadas anteriormente. Compartiré lo que funcionó para mí.
Estaba usando un RecyclerView, y había establecido un color de fondo para el artículo. Sin embargo, parecía raro cuando la cantidad de artículos no se ajustaba a la pantalla
Luego utilicé la función
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
view.setBackgroundColor(color);
}
Y llamó a la función setActivityBackgroundColor(R.color.colorAccent);
en mi código en otra función. Eso llevó a este diseño . Bastante raro.
Finalmente lo solucioné siguiendo lo que sugirió.
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
view.setBackgroundResource(color);
}
Esto finalmente lo solucionó .
EDIT: la solución comenzó a arrojar un error si el RecyclerView no estaba lleno. En ese caso, configuré una bandera para verificar si la vista está vacía o no.
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
if (dataIsNull) {
view.setBackgroundColor(color);
}
else {
view.setBackgroundResource(color);
}
}
Funciona como un encanto ahora.
Obtenga un control del diseño de raíz utilizado, luego establezca el color de fondo en eso. El diseño de raíz es como sea que hayas llamado setContentView with.
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));
Para obtener la vista raíz definida en su archivo xml, sin barra de acciones, puede usar esto:
View root = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);
Por lo tanto, para cambiar el color a blanco:
root.setBackgroundResource(Color.WHITE);
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>
Puede usar esto para llamar a colores Android predefinidos:
element.setBackgroundColor(android.R.color.red);
Si desea usar uno de sus 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 el siguiente a cualquier elemento que lo acepte.
android:background="#FFFFFF"
?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:
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"));
}
});
}
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);
trabajó para mi. gracias.
final View rootView = findViewById(android.R.id.content);
rootView.setBackgroundResource(...);