studio - Android 5.x: ¿Por qué Dialog.Builder corta el texto?
popup android studio (1)
¿Has intentado usar Dialog en su lugar?
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.custom);
dialog.setTitle("Title...");
// set the custom dialog components - text, image and button
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText("Android custom dialog example!");
// make 3 buttons instead of one
Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//do something
}
});
dialog.show();
recomendación: utilizar diseño lineal para el diálogo.
Tengo un problema con Dialog.Builder
, donde se cortan los botones. ¿Cómo puedo resolver esto o es un problema para los dispositivos Motorola?
- Acortar el texto no es una solución.
- Espero el mismo comportamiento como la captura de pantalla de S5, los botones son demasiado largos -> Los botones están uno debajo del otro
Dispositivo: Motorola Moto G / OS: Android 5.0.2
Dispositivo: Galaxy S5 / OS: Android 5.0.2
Aquí está el código y el tema para mostrar el diálogo
public void showDialog(final String title, final String message,
final OnClickListener onClickPositive,
final OnClickListener onCLickNegative, final String positiveButton,
final String negativeButton, final boolean cancelable) {
if (!isFinishing()) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (dialog != null && dialog.isShowing()) {
dialog.cancel();
}
Builder builder;
if (android.os.Build.VERSION.SDK_INT >= 14) {
builder = new AlertDialog.Builder(new ContextThemeWrapper(
MyActivity.this,
android.R.style.Theme_DeviceDefault_Light_Dialog));
} else {
builder = new Builder(MyActivity.this);
}
if (title != null) {
builder.setTitle(title);
}
if (message != null) {
builder.setMessage(message);
}
if (positiveButton != null) {
builder.setPositiveButton(positiveButton, onClickPositive);
}
if (negativeButton != null) {
builder.setNegativeButton(negativeButton, onCLickNegative);
}
builder.setCancelable(cancelable);
dialog = builder.show();
colorizeDialog(dialog);
}
});
}
}
//theme-xml
<style name="Theme.DeviceDefault.Light.Dialog" parent="Theme.Holo.Light.Dialog" >
<item name="android:windowTitleStyle">@android:style/DialogWindowTitle.DeviceDefault.Light</item>
<item name="android:windowAnimationStyle">@android:style/Animation.DeviceDefault.Dialog</item>
<item name="android:buttonBarStyle">@android:style/DeviceDefault.Light.ButtonBar.AlertDialog</item>
<item name="borderlessButtonStyle">@android:style/Widget.DeviceDefault.Light.Button.Borderless.Small</item>
<item name="textAppearance">@android:style/TextAppearance.DeviceDefault.Light</item>
<item name="textAppearanceInverse">@android:style/TextAppearance.DeviceDefault.Light.Inverse</item>
</style>
########################
ACTUALIZAR EDITAR
Parece que el comportamiento no es el mismo en todos los dispositivos. Tenemos un segundo problema, con la adición del botón "neutral". Nuevamente, Galaxy S5 agrega botones uno debajo del otro (de arriba a abajo: positivo, neutral, negativo)
Motorola Moto G (API 5.0.2 / lado izquierdo) muestra un botón neutral en el medio ("Abbrechen rojo") y vuelve a cortar el texto del botón (flecha azul).
Nexus 4 (API 4.3 / lado derecho) muestra el botón neutral en el lado izquierdo, en lugar de en el medio
Parece que tenemos que implementar un diálogo personalizado ...