Android custom alert-dialog mit abgerundeten Ecken und transparentem hintergrund
Habe ich eine benutzerdefinierte AlertDialog mit abgerundeten Ecken mit onDraw
von LinearLayout
als unten,
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);
}
}
Und dann habe ich die Transparenz durch getWindow()
und Einstellung window.alpha = 0.5f
.
Der resultierende dialog ist,
Möchte ich entfernen Sie diese Ecke weißem hintergrund. Ich habe gesucht 100s von Fragen, und keine Antwort bekommen könnte mir das perfekt abgerundete Ecke alert-dialog. Jede mögliche Hilfe würde geschätzt!
InformationsquelleAutor Bharath Mg | 2014-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nutze ich dies und es funktionierte für mich:
ConfirmacionMensaje exntends von Dialog
und das ist mein xml für Dialog:
InformationsquelleAutor XCDreams
Verwenden alert-Dialogfeld verwenden Sie einfache dialog
Ich habe versucht, über ein Dutzend verschiedene Dinge, und das ist in der Tat die einzige, die arbeitete. Sie haben, um eine einfache
Dialog
, unabhängig davon, was die docs sagen.InformationsquelleAutor Ammar ali
Verwenden :
Es ist die einfachste Lösung und es funktioniert.
InformationsquelleAutor Umang Mathur
Dieser arbeitete für mich
hintergrund ist eine überprüfung meiner drawable-Datei
InformationsquelleAutor Ramesh Bhupathi
Diese gelöst werden können:
InformationsquelleAutor Suresh Chary
sind Sie sicher, dass Sie wollen, zu einem dialog?
es scheint mehr wie eine temporäre popup, wie einen toast oder geröstete:
über den hintergrund, man könnte sich die Verwendung eines 9-patch, oder eine benutzerdefinierte xml-drawable (Beispiel hier und hier) ...
Es ist eine Menge code zu kopieren. Sorry.
InformationsquelleAutor android developer
Wenn Ihr dialog ist eine Instanz von
AlertDialog
oderDialog
fügen Sie die folgenden codes:Seite Hinweis: die Erweiterung
LinearLayout
für die Anwendung abgerundete box, meiner Meinung nach, ist nicht eine gute Praxis, alternativ können Sie dies durch die sehr einfache XML-Darstellung, in diesem Fall eine XML-rechteckige Form kann helfen, viel mehr :NÖ. Funktioniert dies nicht.
InformationsquelleAutor Hi I'm Frogatto
dies ist für mich arbeitete,zum ersten mal
hier bin ich immer die Ressource aus dem drawable Ordner,background_verification ist drawable-Datei
InformationsquelleAutor Suresh Chary
erstellen von xml in drawable Ordner mit 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.setzen Sie im layout -
android:background="@drawable/dialog_corner"
3.in Sie die java-Datei, halten Sie folgenden code
InformationsquelleAutor siddhartha shankar