1

Wie erstellt man ein Dialogfragment mit der benutzerdefinierten Form?DialogFragment mit benutzerdefinierter Form

Ich habe ein Symbol, das oben auf dem Dialogfenster (mit Transparenz) platziert werden muss.

Image

Der Dialog selbst sollte sein:

Dialog screen

Der Dialog Layout:

<FrameLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="80dp"> 
     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="40dp" 
      android:layout_gravity="bottom|center"> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/server_error_title" 
       android:layout_marginTop="80dp" 
       android:layout_centerHorizontal="true" 
       android:textSize="20sp" 
       android:textAllCaps="true" 
       android:text="@string/server_error_title" 
       android:textColor="@color/soft_blue" 
       android:fontFamily="sans-serif-medium"/> 
      <View 
       android:layout_width="60dp" 
       android:layout_height="2dp" 
       android:id="@+id/server_error_divider" 
       android:layout_marginTop="21dp" 
       android:layout_centerHorizontal="true" 
       android:layout_below="@id/server_error_title" 
       android:background="@color/soft_blue" /> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/server_error_message" 
       android:layout_marginTop="19dp" 
       android:layout_centerHorizontal="true" 
       android:layout_below="@id/server_error_divider" 
       style="@style/TextDialog" 
       android:text="@string/server_error_message"/> 
      <View 
       android:layout_width="match_parent" 
       android:layout_height="1dp" 
       android:id="@+id/server_error_large_divider" 
       android:layout_marginTop="51dp" 
       android:layout_below="@id/server_error_message" 
       android:background="@color/greyish"/> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:gravity="center_horizontal" 
       android:background="@color/white_grey" 
       android:layout_below="@id/server_error_large_divider"> 
       <Button 
        android:layout_width="320dp" 
        android:layout_height="46dp" 
        android:id="@+id/server_error_close_btn" 
        android:layout_marginTop="30dp" 
        android:layout_marginBottom="30dp" 
        style="@style/TextButton2" 
        android:text="@string/server_error_close_btn" 
        android:background="@drawable/big_button_shape" /> 
      </LinearLayout> 
     </RelativeLayout> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/error_dialog_icon" 
      android:src="@drawable/ic_error_circle" 
      android:layout_gravity="center|top"/> 
    </FrameLayout> 

Aber was ich bekomme diese:

enter image description here

Benötige ich eine benutzerdefinierte ViewGroup oder könnte dies einfacher geschehen?

+0

Verwendung minus Marge auf Image –

+0

@vrundpurohit nicht funktioniert :(http://i.imgur.com/5o22GDL.png – c0nst

+0

OFC give etwas Padding zu deinem FrameLayout. –

Antwort

3

Verwenden folgenden Beispielcode für Ihre xml:

<FrameLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/transparent"> 
     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="45dp" 
      android:background="@android:color/white" 
      android:layout_gravity="bottom|center"> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/server_error_title" 
       android:layout_marginTop="80dp" 
       android:layout_centerHorizontal="true" 
       android:textSize="20sp" 
       android:textAllCaps="true" 
       android:text="@string/server_error_title" 
       android:textColor="@color/soft_blue" 
       android:fontFamily="sans-serif-medium"/> 
      <View 
       android:layout_width="60dp" 
       android:layout_height="2dp" 
       android:id="@+id/server_error_divider" 
       android:layout_marginTop="21dp" 
       android:layout_centerHorizontal="true" 
       android:layout_below="@id/server_error_title" 
       android:background="@color/soft_blue" /> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/server_error_message" 
       android:layout_marginTop="19dp" 
       android:layout_centerHorizontal="true" 
       android:layout_below="@id/server_error_divider" 
       style="@style/TextDialog" 
       android:text="@string/server_error_message"/> 
      <View 
       android:layout_width="match_parent" 
       android:layout_height="1dp" 
       android:id="@+id/server_error_large_divider" 
       android:layout_marginTop="51dp" 
       android:layout_below="@id/server_error_message" 
       android:background="@color/greyish"/> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:gravity="center_horizontal" 
       android:background="@color/white_grey" 
       android:layout_below="@id/server_error_large_divider"> 
       <Button 
        android:layout_width="320dp" 
        android:layout_height="46dp" 
        android:id="@+id/server_error_close_btn" 
        android:layout_marginTop="30dp" 
        android:layout_marginBottom="30dp" 
        style="@style/TextButton2" 
        android:text="@string/server_error_close_btn" 
        android:background="@drawable/big_button_shape" /> 
      </LinearLayout> 
     </RelativeLayout> 

     <FrameLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:padding="4dp" 
     android:background="@drawable/error_circle"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/error_dialog_icon" 
      android:src="@drawable/ic_error_circle" 
      android:layout_gravity="center|top"/> 

     </FrameLayout> 
    </FrameLayout> 

und error_circle:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:innerRadius="0dp" 
    android:shape="oval" 
    android:useLevel="false" > 
    <solid android:color="@android:color/transparent" /> 

    <stroke 
     android:width="45dp" 
     android:color="@android:color/white" /> 
</shape> 

bearbeiten :

Und im onCreateView() des DialogFragment:

getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); 

getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
+0

Mit requestWindowFeature (Window.FEATURE_NO_TITLE); und setContentView (R.layout.Prüfung); Lief wie am Schnürchen. Vielen Dank! – c0nst

6

Sie können Ihre Views(custom button, layout), innerhalb LinearLayout nach Ihrer Idee setzen.

Dialog Methode, Make Window transparent:

Dialog dialog = new Dialog(this); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.test); 
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
dialog.show(); 

test.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@android:color/transparent" > 

<LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="57dp" 
    android:background="#f00" 
    android:orientation="vertical" > 
</LinearLayout> 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:src="@drawable/ic_launcher" /> 

</RelativeLayout> 

Ergebnis (vermeiden BG)

enter image description here

+0

Ihre Antwort ist perfekt. Ich habe eine Aufzählung gemacht. – Krish

+0

@Krish danke Mann, ich schätze Ihre Meinung. :) – W4R10CK

1

Stil erstellen und Ihre Form als Hintergrund zum Beispiel:

<style name="MyDialogFragmentStyl" parent="ThemeOverlay.AppCompat.Dialog"> 
    <item name="android:windowBackground">@drawable/my_dialog_background</item> 
</style> 
1

versuchen, wie diese, wird es Ihnen zeigen, transparente Dialog

Dialog dialog = new Dialog(mContext, android.R.style.Theme_Panel); 
      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
      dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
      dialog.setContentView(R.layout.yourlayout); 
      dialog.setCanceledOnTouchOutside(true); 
      TextView text = (TextView) dialog.findViewById(R.id.----); 
      dialog.show(); 
Verwandte Themen