Ho un problema con lo Dialog.Builder
, in cui i pulsanti sono troncati. Come posso risolvere questo o è un problema per i dispositivi Motorola?Android 5.x: Perché Dialog.Builder elimina il testo?
- rendere il testo più breve non è una soluzione
- mi aspetto lo stesso comportamento come la S5-screenshot, Bottoni troppo lunghi -> I pulsanti sotto l'altro
dispositivo: Motorola Moto G/OS: Android 5.0.2
dispositivo: Galaxy S5/OS: Android 5.0.2
Ecco il codice e il tema per visualizzare la finestra di
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>
########################
UPDATE EDIT
Sembra come, il comportamento non è lo stesso su ogni dispositivo. Abbiamo un secondo problema, con l'aggiunta del pulsante "neutrale". Ancora una volta, Galaxy S5 aggiunta di pulsanti sotto l'altro (dall'alto verso il basso: positiv, neutro, negativo)
Motorola Moto G (API 5.0.2/lato sinistro) mostra Button neutro al centro (rosso "Abbrechen") e taglia nuovamente il testo del pulsante (freccia blu).
Nexus 4 (API 4.3/lato destro) mostra il pulsante neutro sul lato sinistro, invece che in mezzo
Sembra che dobbiamo implementare una finestra di dialogo personalizzata ....
Penso che il problema sia che la lunghezza del testo supera la lunghezza della finestra. Non puoi mettere un testo più a lungo di quella dimensione del contenitore. – Giuseppe
@ Giuseppe: Sì, il testo è troppo lungo. Il problema è, perché Galaxy S5 gestisce questo diritto (i pulsanti sono mostrati sotto l'altro), mentre questo comportamento previsto non funziona su Motorola ?! – longilong
ah ok, non hai specificato questo. Ho pensato che fosse la tua alternativa per risolvere questo problema. Forse il problema è nel tuo ascoltatore e la macchina crea il codice sbagliato! Cosa sono onClickPositive e onClickNegative? – Giuseppe