Остановить Alertdialog для автоматической прокрутки вверх? - PullRequest
0 голосов
/ 04 мая 2018

У меня есть всплывающее окно AlertDialog с DatePicker и TimePicker. AlertDialog довольно длинный, поэтому вам нужно прокрутить вниз, чтобы заполнить все. Однако каждый раз, когда я щелкаю где-то, представление автоматически возвращается к началу AlertDialog, что делает невозможным мирное нажатие на Timeicker.
Есть ли способ остановить прокрутку назад при каждом нажатии что-то?

Вот код:

        private void AddEventDialog(ListView listview, Marker marker, ArrayAdapter<string> adapter)
    {
        TextView name_tv = new TextView(this);
        EditText name_et = new EditText(this);
        TextView start_date_tv = new TextView(this);
        TextView end_date_tv = new TextView(this);
        DatePicker start_date_picker = new DatePicker(this);
        DatePicker end_date_picker = new DatePicker(this);
        TimePicker start_time_picker = new TimePicker(this);
        TimePicker end_time_picker = new TimePicker(this);
        LinearLayout ll = new LinearLayout(this);
        ScrollView sv = new ScrollView(this);
        AlertDialog.Builder ad = new AlertDialog.Builder(this);


        name_tv.Text = "Nom :";
        name_tv.TextSize = 18.0f;

        start_date_tv.Text = "Début :";
        start_date_tv.TextSize = 18.0f;

        end_date_tv.Text = "Fin :";
        end_date_tv.TextSize = 18.0f;

        ll.Orientation = Orientation.Vertical;
        ll.SetPadding(30, 0, 30, 0);
        ll.CanScrollVertically(1);
        ll.AddView(name_tv);
        ll.AddView(name_et);

        ll.AddView(start_date_tv);
        ll.AddView(start_date_picker);
        ll.AddView(start_time_picker);
        ll.AddView(end_date_tv);
        ll.AddView(end_date_picker);
        ll.AddView(end_time_picker);

        sv.AddView(ll);

        ad.SetTitle("Ajout d'un événement");
        ad.SetView(sv);
        ad.SetPositiveButton("Ajouter", (senderAlert, args) => {
            ToastUser("Événement ajouté !", ToastLength.Long);

            DateTime dts = start_date_picker.DateTime.AddHours(start_time_picker.Hour);
            dts = start_date_picker.DateTime.AddMinutes(start_time_picker.Minute);
            DateTime dte = end_date_picker.DateTime.AddHours(end_time_picker.Hour);
            dte = end_date_picker.DateTime.AddMinutes(end_time_picker.Minute);

            EventCreation(name_et.Text, GetPlaceFromMarker(marker).Id, marker.Snippet, start_date_picker.DateTime, end_date_picker.DateTime);
            adapter.Add(name_et.Text);
            listview.Adapter = adapter;
            dialog_child.Dismiss();
            ManageEventsDialog(marker);
        });
        ad.SetNegativeButton("Annuler", (senderAlert, args) => {
        });
        ad.Show();
    }

1 Ответ

0 голосов
/ 04 мая 2018

Я полагаю, это происходит из-за вашего текста редактирования. Ваш текст редактирования всегда начинает фокусироваться, попробуйте сначала отключить это с помощью: В манифесте по желанию задайте

андроида: windowSoftInputMode = "stateHidden"

...