1

これが私のレイアウトです

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <net.simonvt.widget.NumberPicker
        android:id="@+id/numberPicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp" >
    </net.simonvt.widget.NumberPicker>

</RelativeLayout>

アプリにカスタム ピッカーが表示されます。しかし、このピッカーをダイアログ内に表示したいと思います。

これは私のカスタムダイアログです:

public class NumberPickerCustomDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setMessage("Dialog")
           .setPositiveButton("OK", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
               }
           })
           .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
               }
           }).;
    return builder.create();
}

このダイアログにピッカーを配置するにはどうすればよいですか?

ありがとうございました!

4

1 に答える 1

3

ダイアログにカスタムレイアウトを提供する必要があります。そのためには、LayoutInflaterサービスを取得し、それを使用してレイアウトを拡張します。

public class NumberPickerCustomDialog extends DialogFragment {
Context context;

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // get context
    context = getActivity().getApplicationContext();
    // make dialog object
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    // get the layout inflater
    LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    // inflate our custom layout for the dialog to a View
    View view = li.inflate(R.layout.my_custom_view, null);
    // inform the dialog it has a custom View
    builder.setView(view);
    // and if you need to call some method of the class
    MyCustomView myView = (MyCustomView) view.findViewById(R.id.custom_id_in_my_custom_view);
    myView.doSome("stuff");
    // create the dialog from the builder then show
    return builder.create();
}
}
于 2012-11-23T02:29:40.907 に答える