Android CalendarView以编程方式更改

时间:2014-06-01 20:49:17

标签: android datepicker

我正在使用DatePicker创建日历视图。我有4个按钮。前2个按钮供用户选择年份。例如,如果日历当前显示2013,如果用户按下第一个左按钮,我希望它显示2012,如果用户按第一个右按钮,我希望它显示2014年。基本上,按钮s用于递增和递减年和月。但是,我找不到以编程方式更改日历的方法。这是我的代码。当我使用CalanderView时,它会减慢应用程序的速度。这就是为什么我使用DatePicker的CalanderView模式。如果你们中有人知道更好的方法,请告诉我。

          android:background="#ff46554b"
          android:layout_width="match_parent"
          android:layout_height="match_parent" android:weightSum="1">

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_weight=".05"
        android:layout_height="wrap_content">

    <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button"/>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Medium Text"
            android:id="@+id/textView" android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/button"/>
    <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button2"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"/>
</RelativeLayout>


<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_weight=".05"
        android:layout_height="wrap_content">

    <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button"/>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Medium Text"
            android:id="@+id/textView" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/button"/>
    <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button2" android:layout_alignParentTop="true" android:layout_alignParentRight="true"/>

</RelativeLayout>


<LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_weight=".8"
        android:weightSum="1"
        android:layout_height="wrap_content">
    <DatePicker
            android:layout_width="fill_parent"

            android:layout_height="fill_parent"
            android:calendarViewShown="true"
            android:spinnersShown="false"

            android:scaleX="1.3"
            android:scaleY="1.3"
            android:id="@+id/datePicker"
            android:layout_gravity="center_horizontal"
            android:minWidth="100dp"
            android:minHeight="100dp" />
</LinearLayout>

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
         android:layout_weight=".2"
        android:weightSum="1"
        android:layout_height="53dp">
    <Button
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="cancel"
            android:layout_weight=".5"
            android:layout_marginRight="5dp"
            android:layout_marginLeft="5dp"

            android:background="@drawable/refreshbutton"
            android:id="@+id/cancel"/>

    <Button
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="select"
           android:layout_marginLeft="5dp"
           android:layout_marginRight="5dp"
            android:background="@drawable/refreshbutton"
            android:layout_weight=".5"
            android:id="@+id/select"/>
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
              android:layout_height="61dp"
              android:layout_weight=".1"
              android:background="#ff5c625f"
              android:weightSum="1">
    <com.mopub.mobileads.MoPubView
            android:id="@+id/adview"
            android:layout_width="fill_parent"
            android:layout_gravity="top"
            android:layout_height="fill_parent"

            android:layout_weight="1"
            />

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

您可以使用findViewById()获取Button和DatePicker,然后设置按钮的setOnClickListener以使用DatePicker的updateDate(int year, int month, int dayOfMonth)更改年份:

Button b = (Button)findViewById(R.id.BUTTON_ID_HERE);
DatePicker d = (DatePicker)findViewById(R.id.DATEPICKER_ID_HERE);

b.setOnClickListener(new OnClickListener() {
     public void onClick(View v) {
         int year = d.getYear();
         int month = d.getMonth();
         int day = d.getDayOfMonth();

         d.updateDate(year, month, day);
     }
 });

按钮:http://developer.android.com/reference/android/widget/Button.html

DatePicker:http://developer.android.com/reference/android/widget/DatePicker.html