सबसे पहले, मैं एंड्रॉइड विकास के लिए नया हूं इसलिए यह एक साधारण मुद्दा हो सकता है लेकिन मैं वास्तव में इसे काम नहीं कर सकता।

मेरे पास निम्न लेआउट है।

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
              android:orientation="vertical" 
              android:layout_width="fill_parent" 
              android:layout_height="fill_parent"
              android:weightSum="1">

    <FrameLayout android:id="@+id/navigationBarFrameLayout" 
                 android:layout_width="fill_parent"
                 android:layout_height="44dp">
        <ImageView android:id="@+id/navigationBar"
                   android:src="@drawable/navigationbar"
                   android:layout_width="fill_parent" 
                   android:layout_height="fill_parent"
                   android:scaleType="centerCrop"/>
        <TextView android:text="TextView"
                  android:layout_width="fill_parent" 
                  android:id="@+id/navigationBarTitle" 
                  android:layout_height="fill_parent" 
                  android:gravity="center_vertical|center_horizontal"
                  android:textColor="#000" 
                  android:textSize="24sp" 
                  android:textStyle="bold"
                  android:shadowColor="#fff"
                  android:shadowDy="-1" 
                  android:shadowDx="0"
                  android:shadowRadius="1"/>
    </FrameLayout>

    <android.support.v4.view.ViewPager 
             android:layout_width="fill_parent"
             android:id="@+id/DayPager"
             android:layout_height="82dp">
    </android.support.v4.view.ViewPager>

    <RelativeLayout android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:id="@+id/relativeLayout">
        <HorizontalScrollView android:id="@+id/ScheduleScrollView" 
                                  android:layout_width="wrap_content" 
                                  android:layout_height="fill_parent"
                                  android:fadingEdge="none" 
                                  android:layout_above="@+id/tabBarFrameLayout"
                                  android:scrollbars="none" 
                                  android:background="#00ff00">
            <RelativeLayout android:id="@+id/ScheduleRelativeLayout" 
                                    android:layout_height="fill_parent"
                                    android:layout_width="wrap_content">
                <RelativeLayout android:layout_width="fill_parent" 
                                            android:layout_height="wrap_content" 
                                      android:id="@+id/ScheduleTimelineRelativeLayout">
                            </RelativeLayout>
                <RelativeLayout android:layout_width="fill_parent"
                                            android:layout_height="fill_parent" 
                                      android:id="@+id/ScheduleConcertsRelativeLayout"
                            android:layout_below="@+id/ScheduleTimelineRelativeLayout"
                                            android:background="#ff0000" 
                                            android:layout_weight="1">
                           </RelativeLayout>
            </RelativeLayout>
        </HorizontalScrollView>

        <FrameLayout android:id="@+id/tabBarFrameLayout" 
                     android:layout_height="49dp"
                     android:layout_width="wrap_content" 
                     android:layout_alignParentBottom="true" 
                     android:layout_alignParentLeft="true" 
                     android:layout_alignParentRight="true">
            <ImageView android:id="@+id/imageView1" 
                       android:src="@drawable/tabbar" 
                       android:layout_width="wrap_content" 
                       android:layout_height="wrap_content" 
                       android:scaleType="centerCrop"/>
        </FrameLayout>     
    </RelativeLayout>

</LinearLayout>

आप जो देखते हैं वह यह है कि मेरे पास एक क्षैतिज स्क्रॉलव्यू (ScheduleScrollView) है जिसमें दो सापेक्ष लेआउट हैं। ऊपर वाले में एक टाइमलाइन (ScheduleTimelineRelativeLayout) है, जबकि निचले वाले (ScheduleConcertsRelativeLayout) में प्रोग्रामेटिक रूप से बनाए गए कुछ बटन होंगे। क्षैतिज स्क्रॉलव्यू समयरेखा जितना चौड़ा है। मैं निचले सापेक्ष लेआउट को इसके माता-पिता को भरना चाहता हूं, जिसका अर्थ है कि यह क्षैतिज स्क्रॉलव्यू जितना चौड़ा होना चाहिए लेकिन यह काम नहीं करता है।

मैंने अपने प्रश्न का उत्तर खोजने का प्रयास करते हुए इस मंच को खोजा है। कुछ लोग android:layout_width="match_parent" का उपयोग करने का सुझाव देते हैं, लेकिन ऐसा करते समय, मुझे निम्न त्रुटि मिलेगी:

त्रुटि: स्ट्रिंग प्रकारों की अनुमति नहीं है ('लेआउट_विड्थ' पर 'मैच_पैरेंट' मान के साथ)

अन्य लोग android:layout_weight="1" को सेट करने का सुझाव देते हैं, लेकिन यह कुछ भी नहीं बदलता है (और सेटिंग मेरे स्वत: पूर्ण में उपलब्ध नहीं है, इसलिए ऐसा लगता है कि यह मौजूद नहीं है)

नीचे दिया गया स्क्रीनशॉट मेरी समस्या दिखाता है। हरा भाग मेरे क्षैतिज स्क्रॉलव्यू का पृष्ठभूमि रंग है। यह नहीं दिखना चाहिए। इसके बजाय निचले लाल हिस्से को किनारे पर जाना चाहिए।

enter image description here

अद्यतन करें:

enter image description here

अद्यतन करें:

लेआउट रखे जाने के बाद प्रोग्रामेटिक रूप से ScheduleConcertsRelativeLayout की चौड़ाई और ऊंचाई सेट करना काम कर रहा है।

RelativeLayout timeline = (RelativeLayout) findViewById(R.id.ScheduleTimelineRelativeLayout);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(timeline.getWidth(), scheduleConcertsRelativeLayout.getHeight());
params.setMargins(0, timeline.getHeight(), 0, 0);
scheduleConcertsRelativeLayout.setLayoutParams(params);
3
simonbs 6 अक्टूबर 2011, 16:38

3 जवाब

सबसे बढ़िया उत्तर

लेआउट रखे जाने के बाद प्रोग्रामिक रूप से शेड्यूलकॉन्सर्ट रिलेटिव लयआउट की चौड़ाई और ऊंचाई सेट करना काम कर रहा है।

RelativeLayout timeline = (RelativeLayout) findViewById(R.id.ScheduleTimelineRelativeLayout);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(timeline.getWidth(), scheduleConcertsRelativeLayout.getHeight());
params.setMargins(0, timeline.getHeight(), 0, 0);
scheduleConcertsRelativeLayout.setLayoutParams(params);
1
simonbs 19 अक्टूबर 2011, 13:01

मुझे शायद यहाँ कुछ याद आ रहा है, लेकिन क्या आपने बदलने की कोशिश की:

<HorizontalScrollView android:id="@+id/ScheduleScrollView" android:layout_width="wrap_content" ... \>

प्रति

<HorizontalScrollView android:id="@+id/ScheduleScrollView" android:layout_width="fill_parent" ... \>
1
Laurent' 6 अक्टूबर 2011, 16:54
हाँ, यह मुझे वही देता है। लेकिन यह वास्तव में स्क्रॉलव्यू नहीं है जो समस्या है। स्क्रॉल व्यू में यह निचला सापेक्ष लेआउट है जो समस्या है।
 – 
simonbs
6 अक्टूबर 2011, 16:59
हां, लेकिन आपका रिलेटिवलाउट पैरेंट यह हॉरिजॉन्टलस्क्रॉल व्यू है, इसलिए टिप्पणी। वैसे भी, मैं यहाँ आपकी तरह ही अटका हुआ हूँ।
 – 
Laurent'
6 अक्टूबर 2011, 17:17

क्या आपने android:layout_width="fill_parent" को ScheduleRelativeLayout पर आजमाया था?

0
Caner 6 अक्टूबर 2011, 17:16
क्षैतिज स्क्रॉलव्यू पर? हाँ, यह मुझे वही देता है। लेकिन यह वास्तव में स्क्रॉलव्यू नहीं है जो समस्या है। स्क्रॉल व्यू में यह निचला सापेक्ष लेआउट है जो समस्या है।
 – 
simonbs
6 अक्टूबर 2011, 16:58
नहीं, ScheduleRelativeLayout में ("क्षैतिज स्क्रॉलव्यू" पहले से ही पूरी चौड़ाई तक फैला हुआ है)
 – 
Caner
6 अक्टूबर 2011, 17:19
कृपया android:layout_gravity="center_horizontal" को ScheduleRelativeLayout पर भी आजमाएं। एक ही समय में दोनों परिवर्तन करें।
 – 
Caner
6 अक्टूबर 2011, 17:28
इससे स्क्रॉलव्यू बीच में शुरू होता है, इसके आखिरी आधे हिस्से को दिखाता है और फिर खाली जगह को बाकी आधा दिखाता है।
 – 
simonbs
6 अक्टूबर 2011, 17:37
एक आखिरी कोशिश: android:layout_gravity="RIGHT" ScheduleRelativeLayout पर, अगर यह काम नहीं करता है तो मुझे नहीं पता :(
 – 
Caner
6 अक्टूबर 2011, 18:02