2016-10-03 5 views
1

私はダイアログFragmentを持っており、ダイアログの下部にok/cancelボタンを配置したいと思います。私は試みましたが、私が得た唯一のものは、(DialogFragmentにある)編集テキスト上のボタンでした。 enter image description hereDialogFragmentにOk/Cancelボタンを追加する

そして、これは私のダイアログのコードです::Thisiは私のダイアログです

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(); 

} 

これは、ダイアログフラグメントのレイアウトです:

<?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

xmlレイアウトファイルを表示します。 – AAnkit

+0

AlertDialogを使用せず、次のようなものを呼び出すのはなぜですか?新しいAlertDialog.Builder()。setPositiveButton( "Ok"、listener).setNegativeButton( "Cancel"、...).setViewを使用してカスタムビューを追加することもできます –

答えて

3

あなたはonCreateDialogを上書きして設定するAlertDialog.Builderを使用しなければなりませんポジティブボタンとネガティブボタンは次のようになります。

@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

そのようにしてボタンを取得できますが、レイアウトは次のようになります。http://imgur.com/3KRfbuD –

+0

layoutInflaterを使用して、Builderを使用してレイアウトを拡張します。 – kolunar

+0

私の場合、私はこの変更を得ました:LayoutInflater inflater = getActivity()。getLayoutInflater(); –

0

あなたはメソッドクリックイベントの場合

 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(); 

をalertdialog.setView使用し、カスタムダイアログビューを使用したい場合。

Button positiveButton = myview.findViewById(R.id.btnPositive); 
positiveButton.setOnclickListener(new OnClickListener ..... 
関連する問題