2016-10-03 8 views
1

Ich habe ein Dialogfeld Fragment und ich möchte die OK/Cancel-Schaltflächen im unteren Bereich des Dialogfelds setzen. Ich habe versucht, aber das einzige, was ich bekam, war die Schaltflächen über den Bearbeitungstext (das ist in der DialogFragment). Thisi ist mein Dialog: enter image description hereOK/Cancel-Schaltflächen zu DialogFragment hinzufügen

Und das ist mein Dialog Code:

public class dialogNewFile extends DialogFragment { 
private EditText textNewFile; 

public dialogNewFile(){} 

public static dialogNewFile newIstance(String title){ 
    dialogNewFile frag=new dialogNewFile(); 
    Bundle args=new Bundle(); 
    args.putString("title",title); 
    frag.setArguments(args); 
    return frag; 
} 


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

@Override 
public void onViewCreated(View view, @Nullable Bundle savedIstanceState){ 
    super.onViewCreated(view, savedIstanceState); 
    textNewFile=(EditText) view.findViewById(R.id.edit_text_newfile); 
    String title=getArguments().getString("title","Enter name"); 
    getDialog().setTitle(title); 
    textNewFile.requestFocus(); 
    getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); 
} 

@Override 
public void onResume() { 
    Window window = getDialog().getWindow(); 
    Point size = new Point(); 
    // Store dimensions of the screen in `size` 
    Display display = window.getWindowManager().getDefaultDisplay(); 
    display.getSize(size); 
    // Set the width of the dialog proportional to 75% of the screen width 
    window.setLayout((int) (size.x * 0.75), (int) (size.x * 0.50)); 
    window.setGravity(Gravity.CENTER); 
    // Call super onResume after sizing 
    super.onResume(); 

} 

dies ist das Layout des Dialogfragment:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_gravity="center" 
android:id="@+id/dialogNewFile"> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="35dp" 
    android:hint="@string/hint_new_file" 
    android:inputType="text" 
    android:id="@+id/edit_text_newfile"/> 

</LinearLayout> 
+0

Zeigen Sie uns die XML-Layout-Datei. – AAnkit

+0

Warum nicht einen AlertDialog verwenden und so etwas aufrufen: new AlertDialog.Builder(). SetPositiveButton ("Ok", Listener) .setNegativeButton ("Abbrechen", ...) Sie können auch eine benutzerdefinierte Ansicht mit .setView hinzufügen –

Antwort

3

Sie sollen onCreateDialog außer Kraft setzen und verwenden AlertDialog.Builder einstellen die positiven und negativen Knöpfe etwas wie unten:

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    String title = getArguments().getString("title"); 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setTitle(title); 
    builder.setMessage("Are you sure?"); 

    // Edited: Overriding onCreateView is not necessary in your case 
    LayoutInflater inflater = LayoutInflater.from(getContext()); 
    View newFileView = inflater.inflate(R.layout.fragment_newfile, null); 
    builder.setView(newFileView); 

    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // on success 
     } 
    }); 
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 

    return builder.create(); 
} 
+0

Danke , auf diese Weise kann ich die Knöpfe bekommen, aber mein Layout ist jetzt abgedeckt, so: http://imgur.com/3KRfbuD –

+0

Verwenden Sie layoutInflater, um Ihr Layout mit dem Builder aufzublasen. – kolunar

+0

In meinem Fall habe ich diese Änderung verdient: LayoutInflater inflater = getActivity(). GetLayoutInflater(); –

0

Wenn Sie wollen Dialog Ansicht Verwendung benutzerdefinierte, verwenden alertdialog.setView Methode

 AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     View myview = alertDialog.getLayoutInflater().inflate(R.layout.custom_dialog_layout, null); 
     final AlertDialog alertDialog = builder.create(); 
     builder.setView(myview); 
     alertDialog .show(); 

Für die Klicks Veranstaltungen.

Button positiveButton = myview.findViewById(R.id.btnPositive); 
positiveButton.setOnclickListener(new OnClickListener ..... 
Verwandte Themen