【问题标题】:I want to show two number picker using dialog我想使用对话框显示两个数字选择器
【发布时间】:2015-02-16 00:29:34
【问题描述】:

我正在尝试仅使用 java 在对话框上显示两个数字选择器,代码正在运行,但我无法将其排列为等宽。

这是我的代码

RelativeLayout relative = new RelativeLayout(mContext);
final NumberPicker aNumberPicker = new NumberPicker(mContext);
aNumberPicker.setMaxValue(50);
aNumberPicker.setMinValue(1);
final NumberPicker aNumberPickerA = new NumberPicker(mContext);
aNumberPickerA.setMaxValue(11);
aNumberPickerA.setMinValue(1);
aNumberPickerA.setDisplayedValues(new String[] { "Tea Cup", "Glass","Plate","Small Plate","Cutlets","Medium","Piece","Katori","Balls","Serving","egg"});

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(50, 50);

RelativeLayout.LayoutParams numPicerParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams qPicerParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);


numPicerParams.addRule(RelativeLayout.CENTER_IN_PARENT);
qPicerParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
relative.setLayoutParams(params);
relative.addView(aNumberPicker,numPicerParams);
relative.addView(aNumberPickerA,qPicerParams);


AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mContext);
alertDialogBuilder.setTitle("Select the number");
alertDialogBuilder.setView(relative);
alertDialogBuilder
        .setCancelable(false)
        .setPositiveButton("Ok",
            new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,
                    int id) {
                Log.e("","New Quantity Value : "+ aNumberPicker.getValue());

            }
        })
        .setNegativeButton("Cancel",
            new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,
                    int id) {
                dialog.cancel();
            }
        });
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();

我想让它们等宽对齐。

快照

【问题讨论】:

    标签: android xml android-activity numberpicker


    【解决方案1】:

    您正在为添加到 LinearLayout 的视图设置 RelativeLayout.LayoutParams。您应该使用 RelativeLayout 代替 LinearLayout 作为 NumberPicker 的父级。设置 RelativeLayout.LayoutParams 不适用于 LinearLayout

    编辑:

    我会使用 LinearLayout 作为父级,将方向设置为水平,将子级权重设置为“1”。会是这样的……

    LinearLayout LL = new LinearLayout(mContext);
    LL.setOrientation(LinearLayout.HORIZONTAL);
    //
    final NumberPicker aNumberPicker = new NumberPicker(mContext);
    aNumberPicker.setMaxValue(50);
    aNumberPicker.setMinValue(1);
    //
    final NumberPicker aNumberPickerA = new NumberPicker(mContext);
    aNumberPickerA.setMaxValue(11);
    aNumberPickerA.setMinValue(1);
    aNumberPickerA.setDisplayedValues(new String[] { "Tea Cup", "Glass","Plate","Small Plate","Cutlets","Medium","Piece","Katori","Balls","Serving","egg"});
    //
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(50, 50);
    params.gravity = Gravity.CENTER;
    //
    LinearLayout.LayoutParams numPicerParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    numPicerParams.weight = 1;
    //
    LinearLayout.LayoutParams qPicerParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    qPicerParams.weight = 1;
    //
    LL.setLayoutParams(params);
    LL.addView(aNumberPicker,numPicerParams);
    LL.addView(aNumberPickerA,qPicerParams);
    

    我希望这会有所帮助。

    祝你好运。 :)

    【讨论】:

    • 我已经编辑了问题实际上 linearLayout 是相对布局对象的名称。请再次检查并指导我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    相关资源
    最近更新 更多