Android CalendarView विजेट से तारीख चयन करना
यह उदाहरण दर्शाता है कि CalendarView विजेट का उपयोग करके एक इंटरैक्टिव कैलेंडर कैसे दिखाया जाए और तारीख चयन पर कॉलबैक कैसे प्राप्त करें।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project चुनें।
चरण 2: लेआउट फ़ाइल (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/dateView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="20dp"
android:text="तारीख चुनें"
android:textColor="@android:color/black"
android:textStyle="bold"
android:textSize="18sp" />
<CalendarView
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/dateView"
android:layout_marginTop="16dp"
android:layout_marginHorizontal="16dp"
android:dateTextAppearance="@style/CalendarDateText"
android:weekDayTextAppearance="@style/CalendarWeekDayText" />
</RelativeLayout>
चरण 3: MainActivity (src/MainActivity.java)
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CalendarView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private CalendarView calendarView;
private TextView dateView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
calendarView = findViewById(R.id.calendarView);
dateView = findViewById(R.id.dateView);
// तारीख परिवर्तन लिसनर सेट करें
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
// month 0-आधारित है (0=जनवरी), इसलिए +1 करें
String formattedDate = String.format("%02d-%02d-%04d", dayOfMonth, month + 1, year);
dateView.setText("चुनी गई तारीख: " + formattedDate);
}
});
// वैकल्पिक: प्रोग्रामेटिकली तारीख सेट करें
// calendarView.setDate(System.currentTimeMillis(), false, true);
// वैकल्पिक: न्यूनतम/अधिकतम तारीख सेट करें
// calendarView.setMinDate(System.currentTimeMillis() - 86400000); // कल से
// calendarView.setMaxDate(System.currentTimeMillis() + 86400000 * 30); // 30 दिन बाद तक
}
}
CalendarView कस्टमाइजेशन (styles.xml में)
<style name="CalendarDateText" parent="android:TextAppearance.DeviceDefault.Small">
<item name="android:textColor">@android:color/black</item>
<item name="android:textSize">14sp</item>
</style>
<style name="CalendarWeekDayText" parent="android:TextAppearance.DeviceDefault.Small">
<item name="android:textColor">@android:color/holo_blue_dark</item>
<item name="android:textStyle">bold</item>
</style>
CalendarView के मुख्य XML एट्रिब्यूट्स
| एट्रिब्यूट | विवरण |
|---|---|
android:firstDayOfWeek |
सप्ताह का पहला दिन (1=रविवार, 2=सोमवार...) |
android:minDate |
न्यूनतम चुनने योग्य तारीख (मिलीसेकंड) |
android:maxDate |
अधिकतम चुनने योग्य तारीख |
android:shownWeekCount |
दिखाए जाने वाले सप्ताहों की संख्या |
android:dateTextAppearance |
तारीख टेक्स्ट स्टाइल |
android:weekDayTextAppearance |
सप्ताह दिन हेडर स्टाइल |
चरण 4: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
</intent-filter>
</activity>
</application>
</manifest>
ऐप चलाएं
ऐप लॉन्च करें, कैलेंडर पर किसी तारीख पर टैप करें, और ऊपर TextView में फॉर्मेट की गई तारीख देखें।
