2016-04-21 20 views
0

Ich möchte meine Größe ändern AlertDialog.Builder, aber ich habe keine Lösung auf dieser Website gefunden, ich habe alles versucht, was ich auf Fragen wie this one sah, aber scheint älter als ich suche, der Code, den ich gerade sehe nicht jetzt arbeiten ...Wie ändere ich die Größe eines AlertDialog.Builders?

ALERTDIALOGBUILDER.JAVA

public class AlertDialogInfo extends AlertDialog.Builder { 

public AlertDialogInfo(Context context, String title, String msg) { 
    super(context); 
    AlertDialog.Builder builder = new AlertDialog.Builder(context,R.style.AppCompatAlertDialogStyle); 
    builder.setTitle(title); 
    builder.setMessage(msg); 
    builder.setNegativeButton("OK",new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 
    } 
} 

ich versuchte AlertDialog.Builder-AlertDialog zu werden es um die Größe, sondern zeigt nur ein schwarzes Quadrat ohne Daten.

FRAGE: Was soll ich tun, um einen AlertDialog.Builder mit einem großen Text zu machen? (Müssen diese sicher bewegen, weil ich nicht will den Dialog so groß wie mein Bildschirm machen)

AKTUALISIERT:

Was ich will, so etwas wie das ist, ich habe den Text zu ändern, indem Bundle, nenne ich das Alertdialog von meinem AppCompatActivity der FrameLayout verwendet (ich weiß nicht, welche Art von Dialog sollte es zu decken sein, was ich brauche):

WhatIWant

AKTUALISIERT 2 :

Schließlich suche ich mit dem nächsten Code zu tun, was ich habe versucht, aber es funktioniert immer noch nicht ...

ALERT_DIALOG.XML

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="250dp"> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:scrollbarAlwaysDrawVerticalTrack="true" 
    android:scrollbars="vertical"> 

    <TextView 
     android:id="@+id/msg" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="14sp" /> 

</LinearLayout> 

MYALERTDIALOG.JAVA

public class MyDialogFragment extends DialogFragment { 

public static MyDialogFragment newInstance(String text) { 
    MyDialogFragment frag = new MyDialogFragment(); 
    Bundle args = new Bundle(); 
    args.putString("TEXT", text); 
    System.out.print("Text dentro de newInstance: " + text); 
    frag.setArguments(args); 
    return frag; 
} 

@NonNull 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    String sinopsis = getArguments().getString("TEXT"); 
    System.out.print("Text dentro de onCreateDialog: " + text); 
    return new AlertDialog.Builder(getActivity()) 
      .setIcon(android.R.drawable.ic_dialog_info) 
      .setTitle("TITLE") 
      .setMessage(text) 
      .setNegativeButton("OK", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
          dismiss(); 
         } 
        } 
      ) .create(); 
} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.alert_dialog, container); 
} 
} 

ActivityWhereDialogIsBeenCalled.java

........ 
DialogFragment frag = MyDialogFragment.newInstance("MY MESSAGE"); 
     frag.show(getSupportFragmentManager(),"TAG"); 
............... 

Mein Dialog erscheint Standard-Layout verwendet (es muss nicht Scroll noch meine interessiert Größe (zeigt nur als Standard-Android-Alarm-Dialog ...)

Wie kann ich diese Frage lösen? Ich denke, das ist albern, aber es ist frustrierend ... Danke trotzdem!

+0

http://www.mkyong.com/ android-android-custom-dialog-example/ –

Antwort

0

Sie sollten das benutzerdefinierte Dialogfeldlayout verwenden, überprüfen Sie documentation.

Eigentlich können Sie die Größe ändern Dialog von getDialog().getWindow().setLayout(width, height); nur OnResume aufrufen (nicht onCreateView).

Ihre Ansicht muss in einer ScrollView verschachtelt sein, überprüfen Sie post.

Das Lesen von sehr viel Text in einem Dialog kann ärgerlich sein, es ist besser, alle Pixel zu verwenden, die Sie haben, einfache Aktivität/Fragment zu betrachten.

+0

Danke dir Maxim, könntest du mir sagen, wie man nicht ein DialogFragment im Vollbildmodus macht? Es scheint der gleiche Fehler ... –

+0

Ich habe versucht ... setLayout(), aber es funktioniert nicht :( –

+0

Ich habe diesen Beitrag bereits gesehen, und scheint zu sein, was ich suche, danke. Aber was ist das Beste Möglichkeit, die Nachricht des Dialogs mit Hilfe von Bündel zu ändern, da die Aktivität, in der der Dialog aufgerufen wird, –

-1

Wenn Sie eine Alertdialog innerhalb eines DialogFragment verwenden, mit der AppCompat Support-Bibliothek 23.2.1 oder höher, müssen Sie den Resize-Code in DialogFragment.onStart() setzen, sonst wird es nicht funktionieren. Etwas wie folgt aus:

@Override 
public void onStart() { 
    super.onStart(); 
    // Method 1 
    alertDialog.getWindow().getAttributes().width = 400; // pixels 
    alertDialog.getWindow().getAttributes().height = 500; // pixels 
    // Re-apply the modified attributes 
    alertDialog.getWindow().setAttributes(
      alertDialog.getWindow().getAttributes()); 

    // Method 2 (alternative) 
    alertDialog.getWindow().setLayout(400, 500); // size in pixels 
} 

Weitere Informationen:

Verwandte Themen