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?
- Diálogo de alerta personalizado con RecyclerView
- Cómo agregar TextView y EditText utilizando AlertDialog predeterminado mediante programación
- Android AlertDialog.Builder setSingleChoiceItems con estilo de celda personalizado
- Cómo cambiar el fondo del título de diálogo de alerta de Android
- AlertDialog con vista personalizada no "redimensionar"
- ¿Cómo puede inflar una presentación que contenga listview en un cuadro de diálogo de alerta?
- EditText en el diálogo android
- ¿Cómo mostrar un cuadro de diálogo con el hilador de progreso?
- Obtener 'No se puede resolver el método' addOnCompletionListener () '...' al intentar colocar algún código dentro del método onClick () de builder.setPositiveButton
- GetActivity () es nulo dentro de AlertDialog de un fragmento
- El teclado flexible no se oculta mediante programación en android
- Debe llamar a removeView () en el padre del niño primero con AlertView
- Establecer la altura de un AlertDialog con una vista personalizada de cero tamaño intrísico
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));
- ¿Cómo hacer que SharedPreferences de una PreferenceActivity esté configurada como predeterminada en Android?
- ¿Qué hace testAndroidTestCaseSetUpProperly hacer