Как создать пользовательский вид выбора на диалоговом окне в API-уровне 7 в Android?

Я хотел бы создать пользовательский вид выбора из API уровня 7

когда я нажимаю на кнопку, открываем пользовательское диалоговое окно, в котором есть три выбора номера, и каждый выбор имеет определенный набор значений....

но я не понял, как 3 пикера работают на одном диалоговом окне? и как записать каждый номерПикера onvaluechangeListener();

Мне нравится отображать диалог, как это

4 ответа

Вы должны сделать каждый сборщик номера самостоятельно, если хотите, чтобы он был индивидуальным. В вашем dialog_layout.xml:

    <NumberPicker
    android:id="@+id/number_picker_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

В вашем методе showPickerDialog:

    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    View view = mLayoutInflater.inflate(dialog_layout, null);
    builder.setTitle(yourTitle);
    final NumberPicker numberPicker = (NumberPicker) view.findViewById(R.id.number_picker_1);
    hourPicker.setMaxValue(yourMaxValue);
    hourPicker.setMinValue(yourMinValue);
    hourPicker.setValue(yourDefaultValue);
    hourPicker.setWrapSelectorWheel(false);
    builder.setView(view);
    builder.setPositiveButton(context.getString(R.string.set), new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            int value = numberPicker.getValue();
            /*do something with your values*/
            dialog.dismiss();
        }
    });
    builder.setNegativeButton(context.getString(R.string.cancel), new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    final AlertDialog dialog = builder.create();
    dialog.show();

}

Таким образом, вы можете создать действие и задать ему тему диалога в манифесте.

android:theme="@style/Theme.NoTitleBar.Dialog"

Вы также можете использовать библиотеку wheelview для этого

    private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
    // the callback received when the user "sets" the Date in the
    // DatePickerDialog
    public void onDateSet(DatePicker view, int yearSelected,
            int monthOfYear, int dayOfMonth) {
        year = yearSelected;
        month = monthOfYear;
        day = dayOfMonth;
        UserDataModel.setDob(day + "-" + month + "-" + year);
        isDOBSet = true;
        String mon = "";
        switch (month) {

        case 0:
            mon = "Jan";
            break;
        case 1:
            mon = "Feb";
            break;
        case 2:
            mon = "Mar";
            break;
        case 3:
            mon = "Apr";
            break;
        case 4:
            mon = "May";
            break;
        case 5:
            mon = "Jun";
            break;
        case 6:
            mon = "Jul";
            break;
        case 7:
            mon = "Aug";
            break;
        case 8:
            mon = "Sep";
            break;
        case 9:
            mon = "Oct";
            break;
        case 10:
            mon = "Nov";
            break;
        case 11:
            mon = "Dec";
            break;

        }
        tv_DOB.setText(mon+" "+day+" " + year);
        tv_DOB.setTextColor(getResources().getColor(R.color.DarkGREY));
        // Set the Selected Date in Select date Button

    }
};


@Override
@Deprecated
protected Dialog onCreateDialog(int id) {
    // TODO Auto-generated method stub
    switch (id) {
    case DATE_DIALOG_ID:
        // create a new DatePickerDialog with values you want to show
        return new DatePickerDialog(this, mDateSetListener, mYear-20, mMonth,
                mDay);
    }

    return super.onCreateDialog(id);
}

Попробуйте этот код и используйте представление календаря вместо пользовательских сборщиков. Как бы я ни реализовал пользовательский сборщик, как вы требуете, если вам это нужно, дайте мне знать.

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

<NumberPicker
    android:id="@+id/inchpicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/feetpicker"
    android:layout_marginRight="54dp" />

<NumberPicker
    android:id="@+id/feetpicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="54dp"
    android:layout_marginTop="14dp" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@id/feetpicker"
    android:layout_alignRight="@id/feetpicker"
    android:layout_below="@+id/feetpicker"
    android:layout_marginTop="29dp"
    android:text="   Feet"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="@color/GREY" />

<TextView
    android:id="@+id/tv_maps_selectedLocation"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView1"
    android:layout_alignBottom="@+id/textView1"
    android:layout_alignLeft="@id/inchpicker"
    android:layout_alignRight="@+id/inchpicker"
    android:text="  Inch"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="@color/GREY" />

<Button
    android:id="@+id/btn_setheight"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="12dp"
    android:background="@drawable/btn_login"
    android:text="Set"
    android:textColor="@color/WHITE" />

это мой файл макета.

и это открыть диалог, и вы можете сделать это, как вы хотите.

        final Dialog d = new Dialog(this);
        d.setTitle("Pick your height");

        d.setContentView(R.layout.heightpickdialog);
        Button set = (Button) d.findViewById(R.id.btn_setheight);
        d.setCancelable(false);

        final NumberPicker feetpick = (NumberPicker) d
                .findViewById(R.id.feetpicker);
        feetpick.setMaxValue(8);
        feetpick.setMinValue(1);
        feetpick.setValue(Integer.parseInt(feet));
        feetpick.setWrapSelectorWheel(false);

        final NumberPicker inchPick = (NumberPicker) d
                .findViewById(R.id.inchpicker);
        inchPick.setMaxValue(11);
        inchPick.setMinValue(0);
        inchPick.setValue(Integer.parseInt(inch));
        inchPick.setWrapSelectorWheel(false);

        d.show();
        set.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                feet = String.valueOf(feetpick.getValue());
                inch = String.valueOf(inchPick.getValue());
                UserDataModel.setHeight(feet + " , " + inch);
                displayHeight(feet, inch);
                d.dismiss();
            }
        });
Другие вопросы по тегам