Finestra di dialogo personalizzata di Android con angoli arrotondati e background trasparente

Ho creato un AlertDialog personalizzato con angoli arrotondati utilizzando onDraw di LinearLayout come sotto,

 public class RoundedLinearLayout extends LinearLayout { private Paint drawPaint; private Paint roundPaint; private int mCornerRadius = 100; private RectF bounds; @TargetApi(Build.VERSION_CODES.HONEYCOMB) public RoundedLinearLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); onInit(); } public RoundedLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); onInit(); } public RoundedLinearLayout(Context context) { super(context); onInit(); } protected void onInit() { drawPaint = new Paint(Paint.ANTI_ALIAS_FLAG); drawPaint.setColor(0xffffffff); drawPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); roundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); roundPaint.setColor(0xffffffff); setWillNotDraw(false); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); if (w != oldw && h != oldh) { bounds = new RectF(0, 0, w, h); } } @Override protected void dispatchDraw(Canvas canvas) { Bitmap bitmap = Bitmap.createBitmap((int) bounds.width(), (int) bounds.height(), Bitmap.Config.ARGB_8888); Canvas c = new Canvas(bitmap); super.dispatchDraw(c); BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setShader(shader); canvas.drawRoundRect(bounds, mCornerRadius, mCornerRadius, paint); } } 

E poi ho aggiunto la trasparenza da getWindow() e l'impostazione window.alpha = 0.5f . La window di dialogo risultante è,

  • Elemento di centraggio Android in RecyclerView
  • Colbind il database MySQL da Android
  • Mostra freccia indietro sulla barra degli strumenti Android
  • Perché il mio allarme android funziona istantaneamente?
  • DispatchKeyEvent per ascoltare la barra spaziatrice premendo
  • UsbDeviceConnection requestWait () crash nativo
  • Avviso personalizzato con trasparenza

    Voglio rimuovere quegli background bianco angolo. Ho cercato 100s di domande qui e nessuna risposta potrebbe get me la perfetta window arrotondata d'allarme angolo. Qualsiasi aiuto sarebbe apprezzato!

  • Come filtrare i dati nella scheda di regno?
  • Cordova / Phonegap: codice base aggiornamento live
  • Come specificare le attività che sono solo per telefoni o tablet in Android
  • Come get l'Uri di un'image memorizzata sul SDCARD?
  • C'è un modo per call ActionScript su Android?
  • Comprensione di SSL per il consumo di webservice .Net da Android
  • 9 Solutions collect form web for “Finestra di dialogo personalizzata di Android con angoli arrotondati e background trasparente”

    Io uso questo e ha funzionato per me:

     ConfirmacionMensaje customDialog = new ConfirmacionMensaje(MainActivity.this); customDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); customDialog.show(); 

    ConfirmacionMensaje esiste da Dialog

    e questo è il mio xml per Dialogo:

     <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#ffDB0000"/> <corners android:bottomLeftRadius="4dp" android:bottomRightRadius="4dp" android:topLeftRadius="4dp" android:topRightRadius="4dp" /> </shape> 

    Utilizzare la window di dialogo di avviso utilizzare la window di dialogo semplice

      LayoutInflater factory = LayoutInflater.from(getActivity()); AlertDialog alert = new AlertDialog.Builder(getActivity()); Dialog dialog = new Dialog(getActivity()); dialog.setContentView(your layout); dialog.getWindow().setBackgroundDrawable( new ColorDrawable(android.graphics.Color.TRANSPARENT)); 

    Usa questo :

     dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); 

    È la soluzione più semplice e funziona.

    Questo ha funzionato per me

     dialog.getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.background_verification)); 

    la verifica della priorità bassa è il mio file disegnabile

    Ciò può essere risolto:

      dialog.getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.background_verification)); 

    è sicuro di voler utilizzare una window di dialogo? sembra più come un popup temporaneo, come un brindisi o un crostino:

    sullo background, è ansible utilizzare uno con 9 patch o un disegno personalizzato xml (esempio qui e qui ) …

    Se la window di dialogo è un'istanza di AlertDialog o Dialog aggiungere i seguenti codici:

     myDialog .getWindow() .setBackgroundDrawable(new ColorDrawable(Color.argb(0,0,0,0))); 

    Nota laterale: Estendere LinearLayout per l'applicazione di scatola arrotondata, a mio parere non è una buona pratica. Puoi alternare questo per la rappresentazione XML molto semplice, in questo caso una forma rettangular XML può aiutare molto di più:

     <shape xmlns:android="http://schemas.android.com/apk/res/android"> ... <corners android:radius="3dp" /> ... </shape> 

    questo è stato lavorato per me, per la prima volta

     dialog.getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.background_verification)); 

    qui sto ottenendo la risorsa dalla cartella disegnabile, background_verification è file disegnabile

    1. creare xml nella cartella disegnabile con dialog_corner.

      <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/main_background"/> <corners android:topLeftRadius="@dimen/margin_10" android:topRightRadius="@dimen/margin_10" android:bottomRightRadius="@dimen/margin_10" android:bottomLeftRadius="@dimen/margin_10" /> </shape>

    2.put nella disposizione

    Android: background = "@ drawable / dialog_corner"

    3.in file java mantenere sotto il codice

     View mView =LayoutInflater.from(mContext).inflate(R.layout.layout_pob,null); alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.