带有NumberPicker的AlertDialog呈现错误

Gio*_*Far 4 android rendering android-alertdialog numberpicker

我在使用AlertDialog中的NumberPicker'渲染'时遇到了问题.
我告诉你代码:

                //setup del dialog
                AlertDialog.Builder builder = new AlertDialog.Builder(activity);
                builder.setCancelable(false);

                final NumberPicker picker = new NumberPicker(activity);
                picker.setMinValue(0);
                picker.setMaxValue(5);
                //set bottoni dialog
                builder.setPositiveButton(R.string.dialog_btn_seleziona, seleziona);
                builder.setNegativeButton(R.string.dialog_btn_annulla, null);

                //visualizzo il dialog
                Dialog dialog = builder.create();
                dialog.show();
Run Code Online (Sandbox Code Playgroud)

问题是,而不是像这样的结果:
在此输入图像描述

我有这个结果:
在此输入图像描述
蓝线选择器太长了,我想和
我创建这个主题的第一张图片的长度相同:
NumberPicker在Dialog
错误地呈现,解释了如何解决这个问题,解决方案是:

而不是这个

android:layout_width="match_parent"
Run Code Online (Sandbox Code Playgroud)

你应该用

android:layout_width="wrap_content"
android:layout_gravity="center"
Run Code Online (Sandbox Code Playgroud)

问题是我没有布局(由我自己为这个数字选择器制作)所以我需要以编程方式设置这个参数,但我不知道如何.

Bru*_*uce 13

对不起,我之前误解了.您只需要使用wrap_content创建一个父视图并将您的选择器放在其中.以下是您在代码中执行此操作的方法:

final NumberPicker picker = new NumberPicker(activity);
picker.setMinValue(0);
picker.setMaxValue(5);
final FrameLayout parent = new FrameLayout(activity);
parent.addView(picker, new FrameLayout.LayoutParams(
        FrameLayout.LayoutParams.WRAP_CONTENT,
        FrameLayout.LayoutParams.WRAP_CONTENT,
        Gravity.CENTER));
builder.setView(parent);
Run Code Online (Sandbox Code Playgroud)