Как мне создать Android Spinner как всплывающее окно? - PullRequest
53 голосов
/ 09 июня 2011

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

Нужно ли для этого отдельное диалоговое окно или я могу использовать Spinner напрямую?Я вижу эту ссылку, упоминает опцию MODE_DIALOG, но она, похоже, больше не определяется.AlertDialog может быть в порядке, но все опции говорят: «щелчок по элементу в списке не приведет к закрытию диалога», что я и хочу.Любое предложение?

В идеале, код будет аналогичен случаю, когда счетчик отображается на экране:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(activity,
     android.R.layout.simple_spinner_item, items);              
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
myspinner.setAdapter(adapter);  
// myspinner.showAsDialog() <-- what i want             

Ответы [ 11 ]

0 голосов
/ 24 июня 2014

Это из исходного кода Android SDK. Как видите, у вас есть специальный конструктор для создания Spinner с указанным режимом, который вы хотите использовать.

Надеюсь, это поможет вам:)

 /**
     * Construct a new spinner with the given context's theme, the supplied attribute set,
     * and default style. <code>mode</code> may be one of {@link #MODE_DIALOG} or
     * {@link #MODE_DROPDOWN} and determines how the user will select choices from the spinner.
     *
     * @param context The Context the view is running in, through which it can
     *        access the current theme, resources, etc.
     * @param attrs The attributes of the XML tag that is inflating the view.
     * @param defStyle The default style to apply to this view. If 0, no style
     *        will be applied (beyond what is included in the theme). This may
     *        either be an attribute resource, whose value will be retrieved
     *        from the current theme, or an explicit style resource.
     * @param mode Constant describing how the user will select choices from the spinner.
     * 
     * @see #MODE_DIALOG
     * @see #MODE_DROPDOWN
     */
    public Spinner(Context context, AttributeSet attrs, int defStyle, int mode) {
        super(context, attrs, defStyle);
...