Как я могу установить максимальную высоту для списка в AlertDialog в Android? - PullRequest
1 голос
/ 15 апреля 2020

У меня есть AsyncTask, который настраивает несколько устройств, но некоторые из них могут потерпеть неудачу, и когда задача завершает попытку настроить их все, он показывает AlertDialog со всеми отказавшими устройствами. Проблема в том, что многие устройства перестают работать, потому что просмотр списка становится настолько большим, что мои диалоговые кнопки исчезают.

Код для создания диалога с использованием listView:

    if (listInitialSettingsAdapter.getNerasList("fail").size() != 0) {
        AlertDialog.Builder dialog = new AlertDialog.Builder(activity);
        ArrayList<ScanResult> listFailedNeras = listInitialSettingsAdapter.getNerasList("fail");
        ArrayList<String> listFailedNerasString = new ArrayList<>();
        for (ScanResult neras :
                listFailedNeras) {
            listFailedNerasString.add(neras.SSID);
        }
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(activity, android.R.layout.simple_list_item_1, listFailedNerasString);
        ListView listView = new ListView(activity);
        listView.setAdapter(arrayAdapter);

        dialog.setView(listView)
                .setTitle("Neras não configurados")
                .setMessage("Os Neras listados abaixo não foram configurados, deseja tentar novamente?")
                .setSingleChoiceItems(arrayAdapter, 0, null)
                .setPositiveButton("SIM", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        InstalacaoInicialActivity.configureNerasTask = new ConfigureNerasTask(activity, listInitialSettingsAdapter.getNerasList("fail"), user, wifi, hashMapTimeZone, handler, showMeasures, listInitialSettingsAdapter);
                        InstalacaoInicialActivity.configureNerasTask.execute();
                        listInitialSettingsAdapter.updateViewWhenTryToConfigAgain(listInitialSettingsAdapter.getNerasList("fail"));
                    }
                })
                .setNegativeButton("NÂO", null)
                .show();
    }

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

Как я могу это сделать?

1 Ответ

0 голосов
/ 15 апреля 2020

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

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinerLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

       <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"/>

      <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>

</android.support.constraint.ConstraintLayout>
...