2013-03-30 4 views
5

मैं एक समयबद्ध घटनाओं के साथ एक एंड्रॉइड ऐप बना रहा हूं और मुझे यकीन नहीं है कि मुझे अपनी टाइमलाइन बनाने के लिए किस लेआउट का उपयोग करना चाहिए।कस्टम व्यू का उपयोग करके एक समयरेखा बनाएं

घटनाओं में अलग-अलग ऊंचाई हो सकती है और उपयोगकर्ता उन्हें टैप करते समय बढ़ सकता है लेकिन उनके पास समान चौड़ाई है;

   . 
       . 
       . 
------------- | 
| Event 4 > | -------------- 
------------- | < Event 7 | 
       | |   | 
       | -------------- 
       . 
       . 
       . 

मैं दो दृश्य प्रकार है:

  • EventView डायन घटना की जानकारी
  • TimeBarView डायन पकड़ और उसकी रूपरेखा drow बीच पर बार (कुछ संपत्ति है और एक बहुत ही पर बढ़ा दिया गया है लम्बी अवधि

मैं अपनी वस्तुओं को कैसे रख सकता हूं ताकि यह मेरी टाइम-लाइन पर समय का सम्मान कर सके (उदाहरण के लिए 1 सप्ताह 10px हो सकता है)

किसी भी मदद की सराहना की जाती है। धन्यवाद!

+0

क्या आपको यह दृश्य बनाने में सफलता मिली ?? कृपया कोड साझा करें। –

+0

@ किसी भी सफलता प्राप्त करें ..? कृपया उत्तर दें .. –

+0

@ पंकज कुमार क्या आप सफल हुए? –

उत्तर

1

मैं अब एक ही समस्या से निपटने रहा हूँ।

मैं अभी तक एक पूर्ण समाधान नहीं है, लेकिन मैं एक विचार है:

आप समय के लिए पक्षों के लिए है के बाद से, ListView नहीं उचित क्योंकि घटनाओं ओवरलैप कर सकते हैं।

इसके बजाय 2-कॉलम GridView का उपयोग करने पर विचार करें। मैं AndroidStaggeredGrid का उपयोग करने की सलाह देता हूं, जो विभिन्न आइटम आकारों का समर्थन करता है।

मध्य में चलने वाले वास्तविक "टाइम बार" के लिए, मैं बस ग्रिड व्यू के लिए पृष्ठभूमि के रूप में एक संकीर्ण रेखा का उपयोग करूंगा।

टाइमलाइन पर कोई मार्कर नहीं होगा। इसके बजाए, मार्कर इवेंट व्यू पर होंगे, या तो बाएं या दाएं, इस तरह से मार्कर टाइम बार पर बिल्कुल गिरता है।

इस तरह, जब आप ग्रिड स्क्रॉल करते हैं, तो यह भ्रम देगा कि टाइम बार स्वयं स्क्रॉल कर रहा है।

खाली समय अंतराल को इंगित करने के लिए, बस एक खाली दृश्य जोड़ें जो इसकी ऊंचाई अंतराल के आनुपातिक है।

उम्मीद है कि यह मदद करता है ...

+0

यह काम करता होगा :) – Romain

0

मुझे यकीन नहीं है कि लेआउट के दौरान क्या हो रहा है यह निर्धारित करने के लिए आपकी पोस्ट में पर्याप्त जानकारी है, लेकिन रिलेवेटलाइट शायद आपको जो चाहिए वह करेगा। आप या तो बाएं मार्जिन को पूर्ण स्थिति के रूप में उपयोग कर सकते हैं, या "नियम" जैसे RelativeLayout.LEFT_OF

ने कहा, एंड्रॉइड फ्रेमवर्क के साथ कस्टम लेआउट बनाना बहुत आसान है। बस माप और ऑनआउट पर ओवरराइड करें। ऑनमेजर को यह रिपोर्ट करनी चाहिए कि कंटेनर कितना बड़ा है (अक्सर, माता-पिता जितना बड़ा होता है), और यह बहुत सरल है।

onLayout आमतौर पर इस तरह दिखता है:

@Override 
protected void onLayout(boolean changed, int l, int t, int r, int b) { 
    int count = getChildCount(); 
    for (int i = 0; i < count; i++) { 
     View child = getChildAt(i); 
     if (child.getVisibility() != GONE) { 
      // do the layout for each child here, with child.layout 
      // e.g., child.layout(0, 0, r, b); 
    } 
} 

View.layout 4 तर्क लेता है - शीर्ष, बाएं, नीचे, और सही - बहुत सरल। आपके पास एल, टी, आर और बी में कंटेनर के आयामों तक पहुंच है।

HTH

संबंधित मुद्दे