2010-12-20 13 views
11

मैं एंड्रॉइड के लिए नया हूं और इस पर समाधान ढूंढ रहा हूं लेकिन अब तक कोई भाग्य नहीं है। मैं एक लेआउट बनाना चाहता हूं जो नीचे दी गई तस्वीर की तरह कुछ है।क्षैतिज स्क्रॉलव्यू के अंदर लेआउट स्क्रीन का आकार

मैं एक लाइनर लेना चाहता हूं जो कि स्क्रीन का आकार है। फिर एक और रैखिक है जो स्क्रीन का आकार है लेकिन स्क्रीन बंद है। मैं फिर दो आभासी "स्क्रीन" के बीच स्क्रॉल कर सकते हैं।

enter image description here

वहाँ एक दिलचस्प लेख है कि कैसे scrollview वर्ग का विस्तार करने के लिए इतना है कि मैं एक शांत स्नैप करना प्रभाव हो सकता है के बारे में बताया है, इसलिए यदि मैं इस काम करने के लिए प्राप्त कर सकते हैं, मेरे ऐप ज्यादा घर के बीच स्क्रॉल तरह महसूस करेंगे स्क्रीन।

मैंने वजन के बारे में और scrollView के fillViewport = "true" के बारे में भी पढ़ा है। मुझे डर है कि मुझे समझ में नहीं आता कि लाइनरलाइट्स स्क्रीन भरने के लिए इन्हें क्षैतिज स्क्रॉल व्यू के साथ कैसे उपयोग किया जा सकता है। मैंने fill_parent और wrap_content के सभी प्रकार के संयोजनों का प्रयास किया है लेकिन इसका कोई फायदा नहीं हुआ है।

जैसा कि मैंने इसे देखा है, यह कार्यक्षमता उन डिवाइसों के बीच ऐप की पोर्टेबिलिटी को चोट नहीं पहुंचाएगी, जब तक कि मैं स्क्रीन पर भिन्नता के साथ उप दृश्य (प्रत्येक "स्क्रीन" में तत्व) का निर्माण करता हूं।

<HorizontalScrollView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/HorizontalScrollView01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:fillViewport="true"> 

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <EditText 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/txtTestBox" 
      > 
     </EditText> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 

     <Button 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Button 1" 
     /> 

    </LinearLayout> 

</LinearLayout> 

</HorizontalScrollView> 

दुर्भाग्य से, यह है कि मैं क्या देख रहा हूँ के करीब नहीं मिलता है:

यहाँ एक्सएमएल मैं कोशिश कर रहा था का एक सरल उदाहरण है। उम्मीद है कि यह किया जा सकता है ...

किसी भी मदद या सुझाव के लिए धन्यवाद।

+0

मैंने सोचा कि यह 'स्नैप' कोड का लिंक रखने में सहायक हो सकता है जिसका मैं जिक्र कर रहा था। यह यहां पाया जा सकता है: http://blog.velir.com/index.php/2010/11/17/android-snapping-horizontal-scroll/ – paradoX

+0

कार्यक्षमता का एक अतिरिक्त उदाहरण जिसे मैं कार्यान्वित करना चाहता हूं, में पाया जा सकता है एंड्रॉइड के लिए फ़ायरफ़ॉक्स मोबाइल ऐप। पृष्ठ के बाईं ओर स्थित टैब बार (जब तक आप स्क्रॉल नहीं करते हैं तब तक ऑफ स्क्रीन) किसी भी तरह स्क्रोल करने योग्य सतह बनाते हैं जिसमें एक सबव्यूव होता है जो स्क्रीन का सटीक आकार होता है (यह आकार "स्क्रीन" बनाता है जो आकार है भौतिक फोन स्क्रीन के, और जब उपयोगकर्ता स्क्रॉल करता है, तो वे अपने टैब और स्क्रीन देख सकते हैं)। उम्मीद है कि यह मेरा प्रश्न स्पष्ट करता है। – paradoX

उत्तर

1

एक क्षैतिज स्क्रॉल दृश्य असीमित तरफ से स्केल कर सकता है, इसलिए "अभिभावक भरें" अधिकतर संभावना आपके काम की तरह काम नहीं करेगा आंतरिक लेआउट पर। क्या आपने आंतरिक लेआउट पर चौड़ाई को स्पष्ट रूप से निर्दिष्ट करने का प्रयास किया है?

कुछ की तरह:

<HorizontalScrollView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/HorizontalScrollView01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:fillViewport="true"> 

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="400dp" 
    android:layout_height="fill_parent"> 

..... 

</LinearLayout> 


</HorizontalScrollView> 
+0

यह वह दृष्टिकोण है जिसे मैं अब ले रहा हूं। मुझे आशा है कि प्रत्येक दृश्य को मैन्युअल रूप से स्वरूपित करने से बचें, लेकिन ऐसा लगता है कि यह एकमात्र विकल्प है। धन्यवाद! – paradoX

0

क्या कोई विशिष्ट कारण है जिसके लिए आपको लगभग 2 स्क्रीनों की आवश्यकता है? क्यों न सिर्फ उन्हें अलग करें? आप GestureDetector का विस्तार कर सकते हैं, इसलिए जब स्क्रॉल इशारा होता है, तो यह स्वचालित रूप से अगली स्क्रीन पर 'स्नैप' करेगा

+0

अच्छा सवाल, मुझे इसमें रूचि है क्योंकि मुझे लगता है कि यह एक अधिक सहज इंटरफ़ेस की अनुमति देगा। चूंकि मेरा इंटरफ़ेस कुछ जटिल है, मुझे लगता है कि अगली स्क्रीन पर जो भी है उसे 'पिक' करने की क्षमता उपयोगी साबित होगी। इसके अलावा, इस बिंदु पर, मैं जानना चाहता हूं कि ज्ञान के लिए यह कैसे किया जा सकता है कि यह किया जा सकता है (मैं थोड़ी देर के लिए इस समस्या के खिलाफ अपने सिर को टक्कर लगी हूं, इसलिए मैं हारना नहीं चाहता)।अगर मुझे कोई जवाब नहीं मिल रहा है, तो मैं आपके जैसे प्रस्ताव पर वापस गिरने की योजना बना रहा हूं। – paradoX

+0

वैसे, 'स्नैप' कोड का लिंक मैं यहां देख रहा था: http://blog.velir.com/index.php/2010/11/17/android-snapping-horizontal-scroll/ – paradoX

+0

यह वास्तव में प्रश्न का उत्तर नहीं है। उम्मीद है कि वहां एक बेहतर जवाब है। शायद मुझे फ़ायरफ़ॉक्स मोबाइल स्रोत कोड में एक उत्तर मिल सकता है ... – paradoX

1

See here समाधान ScrollView. कोई जरूरत पर android:fillViewport="true" उपयोग करने के लिए LinearLayout चौड़ाई तय करने के लिए किया गया था।

 <HorizontalScrollView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="5dp" 
      android:fillViewport="true" 
      android:orientation="vertical" 
      android:scrollbars="none"> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical"> 
       //create your views 
      </LinearLAyout> 
</HorizontalScrollView> 
संबंधित मुद्दे