Color de fondo de AlertDialog

Estoy usando un AlertDialog con diseño personalizado. El color de TextView en el diseño es negro, por lo que al abrir el diálogo en Android 4.0 con Holo.Light, el texto es visible. Sin embargo, si abre el cuadro de diálogo en Android 2.2, el texto no es visible debido al fondo gris. ¿Hay una manera de cambiar el color de fondo?

Simplemente defina el fondo de la vista raíz en el archivo layout.xml para que el diálogo tenga el color que desee.

Me gusta esto:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/dialog_background" > ... 

Sin embargo, si abre el cuadro de diálogo en Android 2.2, el texto no es visible debido al fondo gris. ¿Hay una manera de cambiar el color de fondo?

Sí, es posible, lo usé en mi aplicación utilizando DialogBuilder. Basta con poner inverseBackgroundForced a true

 builder.setInverseBackgroundForced(true); AlertDialog dialog = builder.create(); dialog.show(); 

En su constructor de diálogo. Forzará el fondo al color blanco (en vez del gris oscuro) en la versión androide antes de Froyo.

Muchas gracias a StinePike y Artjom B.

La idea de StinePike es muy buena.

Puse un TextView en AlertDialog que tiene un fondo modificado para requisitos particulares.

Muestro cómo utilizar el fondo sólido y del gradiente para modificar objetos para requisitos particulares.

Permítanme presentarles el contexto en el que apliqué la Idea de StinePike.

// ubicación: MainActivity.java

 AlertDialog mAlertDialog_With_Radio_Buttons; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ini(); 

}

 public void onAlert_With_Radio_Buttons_Close_Click(View view) { mAlertDialog_With_Radio_Buttons.dismiss(); } // onAlert_With_Radio_Buttons_Close_Click public void alert_with_radio_buttons(){ AlertDialog.Builder mAlertDialog_Builder = new AlertDialog.Builder(this); mAlertDialog_Builder .setView(getLayoutInflater() .inflate(R.layout.alert_with_radio_buttons, null)); mAlertDialog_Builder .setTitle("Select The Directory"); mAlertDialog_With_Radio_Buttons = mAlertDialog_Builder.create(); mAlertDialog_With_Radio_Buttons.show(); } // public void alert_with_radio_buttons(){ // location: alert_with_radio_buttons.xml in layout <LinearLayout android:id="@+id/alert_with_radio_buttons_tv_ll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/turquoise1" android:layout_alignParentTop="true" android:layout_centerHorizontal="true"> <TextView android:id="@+id/mAlert_With_Radio_Buttons_TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textMultiLine" android:background="@color/turquoise2" android:textSize="@dimen/main_wiz_size" android:text = "@string/alert_with_rb_tv_text" /> </LinearLayout> // Location: colors in values <color name="turquoise1">#FF00ABAB</color> <color name="turquoise2">#FF00BCBC</color> // Location: strings in values <string name="alert_with_rb_tv_text">Directory Names</string> // Close Definition // location: alert_with_radio_buttons.xml in layout <Button android:id="@+id/alert_with_radio_buttons_close_btn" android:text="@string/alert_with_radio_buttons_close" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/btn_decor" android:onClick="onAlert_With_Radio_Buttons_Close_Click" /> // location: btn_decor.xml in drawable <shape xmlns:android="http://schemas.android.com/apk/res/android" android:dither="true"> <gradient android:startColor="#700000ff" android:endColor="#70009B80" android:angle="-90"/> </shape> location: strings.xml in values <string name="alert_with_radio_buttons_close">Close</string> 

"¿Hay alguna manera de cambiar el color de fondo?" Sí, hay varios caminos para diferentes contextos.

Por favor, déjame a "proporcionar detalles y compartir mi investigación" para usted. Mi código muestra cómo obtener TextView personalizado para los elementos de ListView incorporados en el cuadro de diálogo de alerta.

Comencemos con el modelo para el elemento de ListView
// ubicación: customized_tv_for_list_view.xml desde el diseño

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/layer_border"> <TextView android:id="@+id/text_view_for_lv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity ="center" android:padding ="5dip" android:background="@color/turquoise2" android:textSize="@dimen/lv_text_size" android:textColor="@color/blue0"/> </LinearLayout> // location: main_activity.xml in layout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/decor" android:orientation="vertical" > <LinearLayout android:id="@+id/main_activity_files_btn_ll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/layer_border" > <Button android:text="Files" android:id="@+id/files_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/btn_decor" android:onClick="onMainActivity_Files_Click" /> </LinearLayout> </LinearLayout> // location: colors.xml in values <color name="blue0">#0000FF</color> <color name="turquoise2">#FF00BCBC</color> // location: dimens.xml in values <dimen name="lv_text_size">24dp</dimen> // location: layer_border.xml in drawable <shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="1dp" android:color="#9999FF" /> <solid android:color="#CCCCFF" /> <padding android:left ="4dp" android:top="4dp" android:right="4dp" android:bottom="4dp" /> <corners android:radius="4dp" /> </shape> // location: decor.xml in drawable <shape xmlns:android="http://schemas.android.com/apk/res/android" android:dither="true"> <gradient android:startColor="#aa0000ff" android:endColor="#aa009B80" android:angle="-90"/> </shape> // location: MainActivity.java ListView mListView; AlertDialog mAlertDialog; ArrayAdapter<String> mArrayAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = new ListView(this); ArrayList<String> mArrayList_Days = new ArrayList<>(); for(int i = 0; i< 32; i++) mArrayList_Days.add("Day " + String.valueOf(i)); mArrayAdapter = new ArrayAdapter<>( this, R.layout.customized_tv_for_list_view, R.id.text_view_for_lv, mArrayList_Days); mListView.setAdapter(mArrayAdapter); mListView .setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String sel_item = (String) mListView .getItemAtPosition(position); Toast.makeText(MainActivity.this, sel_item, Toast.LENGTH_SHORT).show(); mAlertDialog.cancel(); } // onItemClick }); // .setOnItemClickListener build_files_alert_dialog(); } public void build_files_alert_dialog() { AlertDialog.Builder mAlertBuilder = new AlertDialog.Builder(MainActivity.this); mAlertBuilder.setTitle("Days"); mAlertBuilder.setView(mListView); mAlertDialog = mAlertBuilder.create(); WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams(); mLayoutParams.copyFrom(mAlertDialog.getWindow().getAttributes()); } public void onMainActivity_Files_Click(View view) { mAlertDialog.show(); } // onMainActivity_Files_Click 
 AlertDialog.Builder.setView(getLayoutInflater().inflate(R.layout.your_layout, null)); 

Utilizando esta función puede inflar un diseño a su diálogo. Ahora haz lo que quieras en el layout xml. Por ejemplo, consulte el siguiente código.

 AlertDialog.Builder about = new AlertDialog.Builder(this); about.setTitle(getString(name)); about.setIcon(R.drawable.icon); about.setView(getLayoutInflater().inflate(R.layout.your_layout, null)); 
  • Excepción AlertDialog de Android "Resources $ NotFoundException"
  • ¿Cómo puedo configurar una AlertDialog item height?
  • Cómo agregar dos campos de texto de edición o vistas en un cuadro AlertDialog?
  • AlertDialog no muestra divisores en una lista
  • Diferencia entre obj.create () vs obj.show () vs obj.create (). Show () de AlertDialog.builder.
  • Fondo borroso tras el diálogo
  • Actividad de Android ha filtrado ventana com.android.internal.policy.impl.phonewindow $ decorview Issue
  • Cómo obtener clics de botón en fragmento de host del fragmento de diálogo
  • Cómo establecer el título CENTER en AlertDialog?
  • Diálogo de alerta único para toda la aplicación
  • Una lista con selección múltiple en un cuadro de diálogo de alerta?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.