2015-06-24 8 views
5

मेरे पास मेरे ऐप में एक मास्टर-विवरण पैटर्न है, लेकिन मैं विस्तार को दृश्यों को स्विच करने में सक्षम होना चाहता हूं। मैं जितना संभव हो उतना स्थान बचा सकता हूं ताकि "सामग्री" अच्छी और विशाल हो। "ऊपर" बटन "मास्टर" सूची पर वापस जाने के दौरान, मैं "विवरण" से दूसरे "विवरण" में कैसे जा सकता हूं? (मेरी तस्वीर पर के बीच "विस्तार से 1" और "विस्तार से 2" तीर मिलते हैं।)एंड्रॉइड: "ऊपर" बटन "मास्टर" सूची पर वापस जाने के दौरान, मैं "विस्तार" से दूसरे "विवरण" में कैसे जा सकता हूं?

enter image description here

मैं बहुत समय बिताया है इस के बारे में सोच और ऐसा करने के विभिन्न तरीके शोध, और यहां तक एक स्टैक ओवरफ़्लो प्रश्न पूछा (How to do something like Drop Down Navigation in Android (since it looks like it has become deprecated?)) और मैं अभी भी एक उपयोगी उत्तर की प्रतीक्षा कर रहा हूं। यहां तक ​​कि अगर मुझे उस प्रश्न का उत्तर मिला, तो मुझे यकीन नहीं है कि यह वास्तव में मास्टर विस्तार प्रवाह के साथ काम करेगा।

यदि मास्टर-विस्तार काम नहीं करता है, इस यूआई लेआउट को पूरा करने का सबसे अच्छा तरीका क्या होगा? क्या किसी ने पहले ऐसा कुछ किया है? धन्यवाद!


संपादित करें: आदर्श रूप में, मैं यह भी उपयोगकर्ता की तरह पर एक आइटम क्लिक करने के बाद आने के लिए कि पहले स्क्रीन हो जाएगा एक "डिफ़ॉल्ट" (विस्तार से 1 या विस्तार 2) दृश्य सेट करने में सक्षम हो जाएगा मूल सूची।


संपादित करें 2: मैं एक विचार एक ViewPager उपयोग करने के लिए विस्तार से 1 और विस्तार से 2. मुझे यकीन है कि अगर यह हालांकि काम करेंगे नहीं कर रहा हूँ के बीच परिवर्तन करना पड़ा। या, मैं विस्तार 2 को विस्तार 1 से अतिरिक्त गतिविधि कर सकता हूं, लेकिन मैं अपने "सामग्री" क्षेत्र में एक बटन के लिए जगह नहीं बनाना चाहता हूं। मैं वास्तव में एक दराज का उपयोग नहीं कर सकता क्योंकि दराज आइकन "ऊपर" तीर के समान स्थान पर जाता है। मुझे नुकसान हुआ है क्योंकि मुझे लगता है कि दराज इस स्थिति के लिए सबसे अच्छा है, लेकिन मैं इसका उपयोग नहीं कर सकता क्योंकि मैं पहले से ही "ऊपर" तीर का उपयोग कर रहा हूं।


संपादित करें 3: मैं एक ऐप्लिकेशन है जो कि मैं क्या करने की कोशिश कर रहा हूँ किया था के बारे में सोच की कोशिश की, और मुझे लगता है कि "Kindle" यह अच्छी तरह से करता है। इसे किसी पुस्तक के प्रत्येक पृष्ठ के बीच स्विच करना है, लेकिन पहले आपको एक पुस्तक चुननी है। जब आप किंडल पर एक पुस्तक में हैं, तो एक्शन बार & नेविगेशन ड्रॉवर सफेद में बदल जाता है और नेविगेशन ड्रॉवर का पहला आइटम "लाइब्रेरी" होता है। "लाइब्रेरी" पर क्लिक करने से आप विभिन्न मेनू आइटम्स के साथ ब्लैक एक्शन बार और ब्लैक नेविगेशन ड्रॉवर के साथ पूरी तरह से अलग गतिविधि में ले जाते हैं। तो, मुझे लगता है कि शायद यह वह मार्ग है जो मुझे लेना चाहिए। मुझे शायद "ऊपर" बटन नहीं होना चाहिए, और केवल "ऊपर" बटन के रूप में कार्य करने के लिए दराज के पहले आइटम का उपयोग करना चाहिए। मैं अभी भी अपने सभी विकल्पों को सीखने और विचार करने में रूचि रखता हूं।

+1

क्या आप ऐप हैलो एसएमएस से परिचित हैं? मुझे लगता है कि यूआई आप जो हासिल करने की कोशिश कर रहे हैं उसके लिए अच्छा है। उस पर एक नज़र डालें। –

उत्तर

1

यहाँ एक है Fragment एस और ViewPager का उपयोग करने के विकल्प (क्योंकि वे आमतौर पर अधिक बॉयलरप्लेट कोड में समाप्त हो सकते हैं)।

अपने सभी विवरणों को एक layout.xml में रखें और एक बटन के क्लिक पर View.setVisibility() के माध्यम से अपनी दृश्यता टॉगल करें। आप इस बटन को "जारी रखें", "अगला", या जो कुछ भी लेबल कर सकते हैं। मुख्य विचार यह है कि उपयोगकर्ता को यह पता होना चाहिए कि स्क्रीन के परिवर्तन के बावजूद वे एक ही संदर्भ में हैं।

यहाँ आप कैसे की व्यवस्था करनी चाहिए पर उदाहरण दिया गया है अपने विस्तार के layout.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 
    <LinearLayout 
     android:id="@+id/layout_page_1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:visibility="visible"> 

     <!-- Put your detail 1 content here --> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/layout_page_2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:visibility="gone"> 

     <!-- Put your detail 2 content here --> 

    </LinearLayout> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Continue" 
     android:id="@+id/bt_continue"/> 

</RelativeLayout> 

जैसा कि मैंने कहा, विचार layout_page_1 की दृश्यता और layout_page_2bt_continue पर चालू करने के लिए है पर क्लिक किया गया:

@Override 
public void onClick(View v) { 
    if(v.getId() == R.id.bt_continue) { 
     layoutPage1.setVisibility(View.INVISIBLE); 
     layoutPage2.setVisibility(View.GONE); 
    } 
} 

इस तर्क के साथ, आप अपने विवरण के पहले पृष्ठ पर वापस नेविगेट करने के लिए "पिछला" बटन भी कार्यान्वित कर सकते हैं।

यदि आप चाहते हैं कि आपका उपयोगकर्ता डिफ़ॉल्ट दृश्य सेट करने में सक्षम हो तो यह भी आसान है। अपने SharedPreferences में बस int सहेजें जो उस पृष्ठ का प्रतिनिधित्व करेगा जो "खोला जाएगा" - यह वह दृश्य है जो View.VISIBLE पर सेट होगा - पहली बार जब आपका उपयोगकर्ता विवरण दृश्य खोलता है।

2

मुझे लगता है कि इस तरह का समाधान होगा:

  • मास्टर (MainActivity अंदर टुकड़ा)
  • विस्तार से 1 (FirstDetailActivity अंदर टुकड़ा)
  • विस्तार से 2 (SecondDetailActivity अंदर टुकड़ा)

प्रकट फ़ाइल (उदाहरण के लिए):

<application> 

    <!-- The main/home activity (it has no parent activity) --> 
    <activity 
     android:name="...MainActivity" ...> 
     ... 
    </activity> 


    <!-- First detail activity --> 
    <activity 
     android:name="...FirstDetailActivity" 
     android:parentActivityName="...MainActivity" > 
     <!-- Parent activity meta-data to support 4.0 and lower --> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="...MainActivity" /> 
    </activity> 

    <!-- Second detail activity --> 
    <activity 
     android:name="...SecondDetailActivity" 
     android:parentActivityName="...MainActivity" > 
     <!-- Parent activity meta-data to support 4.0 and lower --> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="...MainActivity" /> 
    </activity> 

</application> 

तो मूल रूप से: सूची पर

  1. क्लिक करें (मास्टर) FirstDetailActivity खोलता
  2. FirstDetailActivity पर
  3. क्लिक (टैब, स्पिनर, बटन आदि) SecondDetailActivity खोलता FirstDetailActivity या SecondDetailActivity में से किसी में
  4. ऊपर बटन नेविगेशन प्रदान करता है MainActivity
  5. को

संदर्भ: http://developer.android.com/training/implementing-navigation/ancestral.html

1

अपने विस्तार पृष्ठों को टुकड़ों के रूप में कार्यान्वित करें और दोनों को पकड़ने के लिए ViewPager का उपयोग करें। इस तरह, उपयोगकर्ता बाएं या दाएं स्वाइप करके, दोनों के बीच स्विच कर सकते हैं। उदाहरण के लिए यदि आप जीमेल ऐप देखते हैं, तो मेल मेल सूची में से एक खोलने के बाद भी आप अपने मेल-विवरण के माध्यम से स्वाइप कर सकते हैं।

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