Sto sviluppando una semplice demo. Qui in questa demo sto creando una semplice finestra di avviso personalizzata. Funziona bene.Errore di visualizzazione della finestra di dialogo degli avvisi personalizzati Android dopo aver modificato la versione della build
Mi mostra il risultato perfetto quando creo l'applicazione in 1.6, ma quando cambio la versione di Android da 1.6 a 2.2, mostra il risultato inaspettato. Non mostra la schermata di sfondo su cui visualizzo la finestra di avviso personalizzata.
Ecco il mio file xml.finestra di dialogo personalizzata a tema File
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomDialogTheme" parent="@android:style/AlertDialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowAnimationStyle">@android:style/Theme.Dialog</item>
</style>
</resources>
Qui è il mio CustomConfirmOkDialog Classe
package com.utility.org;
import android.app.Activity;
import android.app.Dialog;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class CustomConfirmOkDialog extends Dialog implements OnClickListener
{
private Button okButton = null;
private TextView infoText=null,confirmBody=null;
private int errorMessage=0;
@SuppressWarnings("unused")
private Activity activity;
public CustomConfirmOkDialog(Activity context,int customdialogtheme,int errorMessage)
{
super(context,customdialogtheme);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.confirm_ok);
this.errorMessage = errorMessage;
this.activity = context;
initControls();
}
private void initControls()
{
okButton = (Button) findViewById(R.id.ok_button);
okButton.setOnClickListener(this);
infoText = (TextView)findViewById(R.id.infoText);
confirmBody = (TextView)findViewById(R.id.confirmBody);
switch (this.errorMessage)
{
case Utility.INVALID_USERNAME_PASSWORD:
try
{
infoText.setText(R.string.signIn);
confirmBody.setText(R.string.invalidUsernameAndPassword);
}
catch (Exception e)
{
e.printStackTrace();
}
break;
default:
break;
}
}
public void onClick(View v)
{
dismiss();
}
}
Chiamare questa classe dalla mia attività principale usando il codice seguente.
CustomConfirmOkDialog dialog = new CustomConfirmOkDialog(MainActivity.this, R.style.CustomDialogTheme, Utility.INVALID_USERNAME_PASSWORD);
dialog.show();
Qui si può notare chiaramente che 1st image
mostra lo sfondo. La sua build nella versione 1.6 di Android mentre 2nd image
non mostra lo sfondo. Mostra l'intero schermo nero. La sua build nella versione 2.2 di Android. Sono molto grato se qualcuno può risolvere questo problema.
Qualcuno può aiutarmi a risolvere questo problema semplice e sciocco?
Grazie in anticipo.
Quando si modifica la versione, si intende la versione di destinazione, la versione minima o massima? O vuoi dire semplicemente su un dispositivo diverso che ha una versione più alta? – Gallal
sto parlando della versione di destinazione del progetto. –
commento sciocco ma ho affrontato lo stesso problema quindi ... stai testando la demo in emulatore con sdk 2.2 causa la causa del dispositivo o dell'emulatore a volte la vista non viene mostrata perfettamente quando si esegue l'applicazione di versione superiore all'emulatore o dispositivo di versione inferiore. – MKJParekh