android - माह दृश्य के साथ एंड्रॉइड कस्टम कैलेंडर




calendar (4)

दिन के अनुसार सहेजी गई घटनाओं के साथ यह एक सामग्री कैलेंडर को आज़माएं।

इसमें ऐसी विशेषताएं हैं जैसे आप घटना के दिनों में एक बिंदु रख सकते हैं। यह सूची प्रारूप में विशेष तिथि पर ईवेंट की सूची प्रदर्शित करता है।

मैं महीना दृश्य के साथ कस्टम कैलेंडर दृश्य की तलाश कर रहा हूं जहां कई तिथियों के विभाजन के साथ घटनाओं को प्रदर्शित किया जाएगा।

उदाहरण के लिए

क्या कोई लाइब्रेरी या उदाहरण है जो मैं देख सकता हूं मैंने पिछले 4 दिनों से कड़ी मेहनत की है लेकिन इसे https://github.com/xsoh/Etar-Calendar को छोड़कर इसके संबंध नहीं मिल पाए हैं

लेकिन यह एक पूर्ण एंड्रॉइड Google कैलेंडर स्रोत कोड है।

धन्यवाद


मैं अपनी परियोजना में इस कैलेंडर का उपयोग कर रहा हूं। यह उपयोग करने के लिए सबसे अच्छा है और प्रत्येक दृश्य प्रदान करने के लिए जहां हम अपनी आवश्यकता के अनुसार अनुकूलित कर सकते हैं।

https://github.com/romannurik/Android-MonthCalendarWidget


कैसे एंड्रॉइड सिस्टम स्रोत कोड में और एंड्रॉइड कैलेंडर को अपने आवेदन में पोर्टिंग के बारे में देख रहे हैं?

कैलेंडर ऐप में नवीनतम माह का दिखना ऐसा लग रहा है। मुझे लगता है कि यह सूट आपकी ज़रूरत है

नवीनतम (नोगाट) रिलीज के लिए कैलेंडर ऐप के लिए स्रोत कोड यहां है

यहां आपके पास फ़ोल्डर है जिसमें MonthByWeekFragment और MonthByWeekAdapter

मैं MonthByWeekFragment से शुरू MonthByWeekFragment


इस पागलपन को स्पष्ट करने में मदद के लिए, मैं सॉफ्ट एंड्रॉइड के Google के निचले हास्यास्पद उपचार के लिए सभी एंड्रॉइड उपयोगकर्ताओं की तरफ से माफ़ी मांगना शुरू करना चाहता हूं। एक ही सरल सवाल के लिए, प्रत्येक अलग-अलग उत्तर हैं, क्योंकि अलग-अलग कारण यह है कि एंड्रॉइड में कई अन्य लोगों की तरह यह एपीआई बेहद डिज़ाइन किया गया है। मैं इसे बताने के लिए कोई विनम्र तरीका नहीं सोच सकता।

मैं कीबोर्ड को छिपाना चाहता हूं। मैं निम्नलिखित कथन के साथ एंड्रॉइड प्रदान करने की उम्मीद करता हूं: Keyboard.hide() । समाप्त। आपका बहुत बहुत धन्यवाद। लेकिन एंड्रॉइड में एक समस्या है। कीबोर्ड को छुपाने के लिए आपको InputMethodManager का उपयोग करना होगा। ठीक है, ठीक है, यह कीबोर्ड के लिए एंड्रॉइड एपीआई है। परंतु! आईएमएम तक पहुंच प्राप्त करने के लिए आपको एक Context होना आवश्यक है। अब हमें एक समस्या है। मैं कुंजीपटल को एक स्थैतिक या उपयोगिता वर्ग से छिपाना चाहता हूं जिसका कोई उपयोग या किसी Context लिए आवश्यकता नहीं है। या एफएआर खराब है, आईएमएम की आवश्यकता है कि आप निर्दिष्ट करें (या इससे भी बदतर, क्या Window ) आप कुंजीपटल से छिपाना चाहते हैं।

यह कुंजीपटल को इतना चुनौतीपूर्ण छुपाता है। प्रिय Google: जब मैं एक केक के लिए नुस्खा देख रहा हूं, वहां पृथ्वी पर कोई पकाने की विधि नहीं है जो मुझे नुस्खा प्रदान करने से इनकार कर देगी जब तक कि मैं पहली बार डब्ल्यूएचओ का जवाब नहीं दूंगा और जहां इसे खाया जाएगा !!

यह दुखद कहानी बदसूरत सच्चाई के साथ समाप्त होती है: एंड्रॉइड कीबोर्ड को छिपाने के लिए, आपको पहचान के 2 रूप प्रदान करने होंगे: एक Context और या तो एक View या Window

मैंने एक स्थिर उपयोगिता विधि बनाई है जो बहुत ही कठिन काम कर सकती है, बशर्ते आप इसे एक Activity से बुलाएं।

public static void hideKeyboard(Activity activity) {
    InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
    //Find the currently focused view, so we can grab the correct window token from it.
    View view = activity.getCurrentFocus();
    //If no view currently has focus, create a new one, just so we can grab a window token from it
    if (view == null) {
        view = new View(activity);
    }
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

ध्यान रखें कि इस उपयोगिता विधि केवल Activity से बुलाए जाने पर ही काम करती है! उपर्युक्त विधि कॉल उचित Activity टोकन लाने के लिए लक्षित Activity getCurrentFocus है।

लेकिन मान लीजिए कि आप एक DialogFragment में होस्ट किए गए DialogFragment से कीबोर्ड को छिपाना चाहते हैं? आप इसके लिए उपरोक्त विधि का उपयोग नहीं कर सकते हैं:

hideKeyboard(getActivity()); //won't work

यह काम नहीं करेगा क्योंकि आप Fragment की मेजबान Activity संदर्भ पारित करेंगे, जिसमें Fragment दिखाए जाने पर कोई ध्यान केंद्रित नहीं होगा! वाह! तो, टुकड़ों से कीबोर्ड को छिपाने के लिए, मैं निचले स्तर, अधिक आम, और उलझन का सहारा लेता हूं:

public static void hideKeyboardFrom(Context context, View view) {
    InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

नीचे इस समाधान का पीछा करते हुए बर्बाद अधिक समय से कुछ अतिरिक्त जानकारी दी गई है:

WindowSoftInputMode के बारे में

इसके बारे में जागरूक होने के लिए विवाद का एक और बिंदु है। डिफ़ॉल्ट रूप से, एंड्रॉइड स्वचालित रूप से प्रारंभिक फोकस को पहले EditText या आपकी Activity में फोकस करने योग्य नियंत्रण में असाइन करेगा। यह स्वाभाविक रूप से निम्नानुसार है कि इनपुट मोड (आमतौर पर सॉफ्ट कीबोर्ड) स्वयं को दिखाकर फोकस ईवेंट का जवाब देगा। AndroidManifest.xml में windowSoftInputMode विशेषता, जब राज्य पर सेट किया जाता है stateAlwaysHidden , कीबोर्ड को स्वचालित रूप से असाइन किए गए प्रारंभिक फ़ोकस को अनदेखा करने के लिए निर्देश देता है।

<activity
    android:name=".MyActivity"
    android:windowSoftInputMode="stateAlwaysHidden"/>

लगभग अविश्वसनीय रूप से, ऐसा लगता है कि जब आप नियंत्रण को स्पर्श करते हैं तो कीबोर्ड को खोलने से रोकने के लिए कुछ भी नहीं होता है (जब तक focusable="false" और / या focusableInTouchMode="false" नियंत्रण में असाइन नहीं किया जाता है)। जाहिर है, windowSoftInputMode सेटिंग केवल स्वचालित फ़ोकस ईवेंट पर लागू होती है, न कि स्पर्श ईवेंट से ट्रिगर की गई घटनाओं पर ध्यान केंद्रित करने के लिए।

इसलिए, stateAlwaysHidden से stateAlwaysHidden है वास्तव में बहुत खराब नामित है। इसे शायद इसके बजाय ignoreInitialFocus कहा जाना चाहिए।

उम्मीद है की यह मदद करेगा।

अद्यतन: खिड़की टोकन पाने के अधिक तरीके

यदि कोई केंद्रित दृश्य नहीं है (उदाहरण के लिए यदि आप अभी टुकड़े बदल गए हैं तो हो सकता है), ऐसे अन्य विचार भी हैं जो उपयोगी विंडो टोकन की आपूर्ति करेंगे।

ये उपरोक्त कोड के विकल्प हैं if (view == null) view = new View(activity); ये आपकी गतिविधि के लिए स्पष्ट रूप से संदर्भित नहीं हैं।

एक खंड वर्ग के अंदर:

view = getView().getRootView().getWindowToken();

पैरामीटर के रूप में एक टुकड़े fragment को देखते हुए:

view = fragment.getView().getRootView().getWindowToken();

आपके सामग्री निकाय से शुरू करना:

view = findViewById(android.R.id.content).getRootView().getWindowToken();

अद्यतन 2: यदि आप पृष्ठभूमि से ऐप खोलते हैं तो कीबोर्ड को फिर से दिखाने से बचने के लिए फोकस साफ़ करें

इस लाइन को विधि के अंत में जोड़ें:

view.clearFocus();





android calendar