由微调器onClick调用的DatePickerDialog

时间:2012-10-01 17:46:22

标签: android dialog datepicker spinner android-spinner

我无法在沙发或谷歌上找到任何东西!所以我需要你的帮助! 我想点击我的(空)微调器,所以我得到一个日期或时间戳对话框。我无法找到任何方法来解决这个问题。这些是我现在的片段:

只是我的两个对象:

DatePickerDialog dDialog = new DatePickerDialog(this, (OnDateSetListener) this, 2012, 3, 3);


        Spinner dSpinner = (Spinner) findViewById(R.id.spinner1);

xml:

 <Spinner
    android:id="@+id/spinner1"
    android:spinnerMode="dialog"
    android:prompt="@string/hint_date"
    android:layout_marginTop="40dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

也许你知道如何处理它。我想选择一个日期,通过onClick调用选择器(旋转器不可能做什么?!)我也试过onclicklisteners。

2 个答案:

答案 0 :(得分:2)

spinnerMode属性不是您要找的。为了在用户点击DatePickerDialog时显示Spinner,您必须创建自定义Spinner窗口小部件并覆盖负责显示默认设置的performClick方法带有Spinner值的对话框。以下是一个例子:

public class CustomSpinnerDialog extends Spinner {

        // implement all the constructors   

    @Override
    public boolean performClick() {
        DatePickerDialog dDialog = new DatePickerDialog(getContext(),
                new OnDateSetListener() {

                    @Override
                    public void onDateSet(DatePicker view, int year,
                            int monthOfYear, int dayOfMonth) {
                        Toast.makeText(getContext(), "Something",
                                Toast.LENGTH_SHORT).show();

                    }
                }, 2012, 3, 3);
        dDialog.show();
        return false;
    }

}

然后,您只需在布局中使用此自定义Spinner即可。

答案 1 :(得分:2)

更好的方法是将按钮屏蔽为Spinner样式,如在Stock Contacts Application Edit Contact屏幕中所做的那样。

    <Button
        android:id="@+id/date_view"
        style="?android:attr/spinnerStyle"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingLeft="12dip"
        android:paddingStart="12dip" />