2016-11-28 169 views
2

蔭使用材料設計的DatePicker我可以能夠從明天的日期設置,但今天的日期也顯​​示在日曆i set for 29/11/2016 but it also showing 28/11/2016 如何禁用如此該用戶不能使用材料設計的DatePicker選擇它 蔭 https://github.com/wdullaer/MaterialDateTimePicker我不能能夠設置從明天日期日期選擇器開始(材料設計日期選擇器)

GregorianCalendar g1=new GregorianCalendar(); 
    g1.add(Calendar.DATE, 1); 
    GregorianCalendar gc = new GregorianCalendar(); 
    gc.add(Calendar.DAY_OF_MONTH, 30); 
    dateButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      DatePickerDialog datePickerDialog ; 
      datePickerDialog = DatePickerDialog.newInstance(LoginSuccess.this, g1.get(Calendar.YEAR), 
        g1.get(Calendar.MONTH), 
        g1.get(Calendar.DAY_OF_MONTH)); 

      datePickerDialog.setTitle("Select Date"); 
      //datePickerDialog.setMinDate(g); 
      GregorianCalendar c2=new GregorianCalendar(); 
      c2.setTimeInMillis(g1.getTimeInMillis()+(27*7*24*60*60*1000)); 
      //c2.add(Calendar.DAY_OF_MONTH, 30); 
      List<Calendar> dayslist= new LinkedList<Calendar>(); 
      Calendar[] daysArray; 
      Calendar cAux = Calendar.getInstance(); 
      while (cAux.getTimeInMillis() <= gc.getTimeInMillis()) 
      { 
       if (cAux.get(Calendar.DAY_OF_WEEK)!=1) 
       { 
        Calendar c = Calendar.getInstance(); 
        c.setTimeInMillis(cAux.getTimeInMillis()); 
        dayslist.add(c); 
       } 
       cAux.setTimeInMillis(cAux.getTimeInMillis()+(24*60*60*1000)); 
      } 
      daysArray = new Calendar[dayslist.size()]; 
      for (int i = 0; i<daysArray.length;i++) 
      { 
       daysArray[i]=dayslist.get(i); 
      } 
      //g1.setTimeInMillis(g.getTimeInMillis()+(7*24*60*60*1000)); 
      datePickerDialog.setMinDate(g1); 
      datePickerDialog.setMaxDate(c2); 
      datePickerDialog.show(getFragmentManager(), "DatePickerDialog"); 
      datePickerDialog.setSelectableDays(daysArray); 

     } 

回答

2

試試看!

dateButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Calendar now = Calendar.getInstance(); 
      now.add(Calendar.DAY_OF_YEAR, 1); 
      DatePickerDialog dpd = DatePickerDialog.newInstance(
        MainActivity.this, 
        now.get(Calendar.YEAR), 
        now.get(Calendar.MONTH), 
        now.get(Calendar.DAY_OF_MONTH) 
      ); 
      dpd.setMinDate(now); 
      dpd.setThemeDark(modeDarkDate.isChecked()); 
      dpd.vibrate(vibrateDate.isChecked()); 
      dpd.dismissOnPause(dismissDate.isChecked()); 
      dpd.showYearPickerFirst(showYearFirst.isChecked()); 
      if (modeCustomAccentDate.isChecked()) { 
       dpd.setAccentColor(Color.parseColor("#9C27B0")); 
      } 
      if(titleDate.isChecked()) { 
       dpd.setTitle("DatePicker Title"); 
      } 
      dpd.show(getFragmentManager(), "Datepickerdialog"); 
     } 
    }); 
} 
+0

相同的兄弟在日期沒有變化 –

+0

你見過我的截圖嗎我保存了 –

+1

@aenugulakarthik我編輯了我的答案! –

0
g1.add(Calendar.DATE, +1); 

檢查它像這樣

+0

試過@naveed阿巴斯,但它顯示28/11/2016 –

+2

請解釋爲什麼這條線將解決問題! – rptwsthi

2

嘿,我已經做了關於這個問題,並能爲你希望得到的日期選擇器檢查一次,並讓我知道 Java示例:

package yourpackage; 
import java.util.Calendar; 
import android.app.Activity; 
import android.app.DatePickerDialog; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.DatePicker; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
private DatePicker datePicker; 
private Calendar calendar; 
private TextView dateView; 
private int year, month, day; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    dateView = (TextView) findViewById(R.id.textView3); 
    calendar = Calendar.getInstance(); 
    year = calendar.get(Calendar.YEAR); 

    month = calendar.get(Calendar.MONTH); 
    day = calendar.get(Calendar.DAY_OF_MONTH); 
    showDate(year, month + 1, day); 
} 

@SuppressWarnings("deprecation") 
public void setDate(View view) { 
    showDialog(1); 
    Toast.makeText(getApplicationContext(), "ca", Toast.LENGTH_SHORT) 
      .show(); 
} 

@Override 
protected Dialog onCreateDialog(int id) { 
    // TODO Auto-generated method stub 
    if (id == 1) { 
     return new DatePickerDialog(this, myDateListener, year, month, 
       day + 1); 
    } 
    return null; 
} 

private DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() { 
    @Override 
    public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) { 
     // TODO Auto-generated method stub 
     // arg1 = year 
     // arg2 = month 
     // arg3 = day 
     showDate(arg1, arg2 + 1, arg3); 
    } 
}; 

private void showDate(int year, int month, int day) { 
    dateView.setText(new StringBuilder().append(day).append("/") 
      .append(month).append("/").append(year)); 
} 

}

佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="70dp" 
    android:onClick="setDate" 
    android:text="@string/date_button_set" /> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="24dp" 
    android:text="@string/date_label_set" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/button1" 
    android:layout_marginTop="66dp" 
    android:layout_toLeftOf="@+id/button1" 
    android:text="@string/date_view_set" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/textView3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/button1" 
    android:layout_below="@+id/textView2" 
    android:layout_marginTop="72dp" 
    android:text="@string/date_selected" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

</RelativeLayout> 
<?xml version="1.0" encoding="utf-8"?> 

<resources> 
<string name="app_name">Androidr</string> 
<string name="hello_world">Hello world!</string> 
<string name="menu_settings">Settings</string> 
<string name="text_label_1">Rate</string> 
<string name="button_label">Submit</string> 
<string name="text_label_2">Result: </string> 
<string name="action_settings">Settings</string> 
<string name="date_label_set">Press the button to set the date</string> 
<string name="date_button_set">Set Date</string> 
<string name="date_view_set">The Date is: </string> 
<string name="date_selected"></string> 
</resources> 
0

你應該這樣做,

Calendar cal = Calendar.getInstance(); 
      cal.set(Calendar.DAY_OF_MONTH, day + 1); 
      cal.set(Calendar.MONTH, month); 
      cal.set(Calendar.YEAR, year); 

datePickerDialog.getDatePicker().setMaxDate(maxDate.getTimeInMillis()); 

這會限制你選擇當前日期,讓你從明天開始選擇 日開始。

0

從我記得這個庫的文檔中,我相信如果你設置MaterialDateTimePicker的可選天數,那麼它會覆蓋你爲最小和最大日期設置的任何事情。所以如果你傳遞一個日期數組,它將需要包含你的最小和最大日期,加上你想看到的所有內容。

相關問題