Как создать диалоговое окно с флажками и одним полем EditText? - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь создать файл диалога xml. Сложно следовать правилам материального дизайна. В основном я хочу, чтобы диалоговое окно позволяло пользователям многократно проверять флажки и внизу иметь возможность добавлять настраиваемый параметр (один EditText). Например:

Choose the options

[x] Option1
[] Option2
[x] Option3
[] Option4

Add custom options:
__________

       [Cancel] [Ok]

Код, который у меня есть:

public void onClick(View view) {
    AlertDialog.Builder mBuilder = new AlertDialog.Builder(AddData.this);
    View mView = getLayoutInflater().inflate(R.layout.dialog_adding_data,null);
    // More code here
    mBuilder.show();
}

Насколько я понимаю, я использую настраиваемый макет диалогового окна. Но в руководстве по материальному дизайну я не видел возможности сделать что-то подобное. Также я не уверен, как создать файл dialog_adding_data. Как мне спроектировать dialog_adding_data так, чтобы он соответствовал рекомендациям по материальному дизайну и имел те же функциональные возможности?

1 Ответ

1 голос
/ 30 мая 2020

Чтобы удовлетворить ваши требования к пользовательскому интерфейсу, вам необходимо настроить пользовательский вид для вашего диалога. Ключевым моментом здесь является использование следующего:

mBuilder.setView(mView);

Если вы не используете привязку представления / данных, при ссылке на представления обязательно используйте mView.findViewById, а не findViewById, как показано ниже:

EditText editText = mView.findViewById(R.id.edit_text);
// Add your code logic, etc.

Что касается dialog_adding_data.xml, который вы создали, он будет похож на любой другой макет. Его иерархия, в зависимости от ваших конкретных потребностей, может выглядеть примерно так:

<ScrollView>

    <LinearLayout>

        <CheckBox />

        <CheckBox />

        <!-- This one controls the EditText below. -->
        <CheckBox android:text="Add custom options" />

        <EditText />

    </LinearLayout>

</ScrollView>

Если количество флажков - динамическое c, тогда вам может потребоваться использовать RecyclerView с двумя типами представления ( один для обычного варианта, а другой для пользовательских параметров).

...