Android पर ListView की ऊंचाई सीमा


92

मैं एक के तहत एक बटन दिखाना चाहते हैं ListView। समस्या यह है, अगर ListViewबढ़ाई गई (आइटम जोड़े गए ...), बटन स्क्रीन से बाहर धकेल दिया जाता है।

मैंने LinearLayoutवजन के साथ कोशिश की (जैसा कि एंड्रॉइड में सुझाव दिया गया है: एक दृश्य के लिए कोई मैक्सहाइट क्यों नहीं है? ), लेकिन या तो मुझे भार गलत मिला या यह बस काम नहीं किया।

इसके अलावा, मैं कहीं न कहीं संकेत का उपयोग करने के लिए पाया RelativeLayoutListViewतो साथ बटन के ऊपर निर्धारित किया जाएगा android:layout_aboveपरम।

इसके साथ समस्या यह है कि मैं नहीं जानता कि बाद में बटन कैसे लगाया जाए। उदाहरण में मैंने पाया, नीचे का दृश्य ListViewउपयोग करके समायोजित किया गया था android:layout_alignParentBottom, लेकिन मैं नहीं चाहता कि मेरा बटन स्क्रीन के निचले भाग से चिपके रहे।

सेटहाइट-विधि का उपयोग करने के अलावा कोई विचार और आवश्यक स्थान की गणना?


संपादित करें: मुझे बहुत सारे उपयोगी उत्तर मिले।

  • bigstone & user639183 के समाधान ने लगभग पूरी तरह से काम किया। हालाँकि, मुझे बटन के निचले भाग में एक अतिरिक्त पैडिंग / मार्जिन जोड़ना था, क्योंकि यह अभी भी स्क्रीन से आधे रास्ते से बाहर धकेल दिया जाएगा (लेकिन तब रोका गया)

  • रिश्तेदार लेआउट के साथ एडिनिया का उत्तर केवल ठीक है यदि आप स्क्रीन के निचले हिस्से में तय बटन चाहते हैं। यह वह नहीं है जो मैंने इरादा किया था लेकिन फिर भी दूसरों के लिए उपयोगी हो सकता है।

  • एंजेलो का समाधान वह था जिसे मैंने अंत में चुना था क्योंकि यह सिर्फ उन प्रभावों को बनाता था जो मैं चाहता था। हालाँकि, मैंने LinearLayoutबटन के चारों ओर दो छोटे बदलाव किए हैं :

    • पहले, जैसा कि मैं अपने लेआउट में कोई पूर्ण मूल्य नहीं रखना चाहता था, मैं बदल android:layout_height="45px"गया wrap_content, जो ठीक भी काम करता है।

    • दूसरा, जैसा कि मैं चाहता था कि बटन क्षैतिज रूप से केंद्रित हो, जो केवल ऊर्ध्वाधर द्वारा समर्थित है LinearLayout, मैंने एंड्रॉइड: अभिविन्यास = "क्षैतिज" को "ऊर्ध्वाधर" में बदल दिया।

    एंजेलो ने अपने प्रारंभिक पोस्ट में यह भी कहा कि अगर वह चारों ओर के किसी भी प्रभाव android:layout_weight="0.1"में है तो उसे यकीन नहीं था; मैंने बस कोशिश की और यह वास्तव में करता है! इसके बिना, बटन फिर से स्क्रीन से बाहर धकेल दिया जाता है।LinearLayoutListView


इस तरह से आंतरिक सापेक्ष लेआउट स्क्रीन की तुलना में लंबा हो रहा है, एक कदम और जोड़ा जा सकता है android:layout_alignParentBottom="true"। लेकिन स्पष्ट होने के लिए, क्या आप चाहते हैं कि कुछ वस्तुओं के होने पर बटन लिस्ट व्यू के निचले हिस्से से जुड़ा रहे? यदि हाँ, तो देखें कि रिच क्या कहता है।
बिगस्टोन्स

हां, मैं यही चाहता हूं।
जेलिफ़िश

वर्षों के बाद, अब हमारे पास अधिकतम ऊंचाई है जो
कांस्ट्रेन्थ लय की बदौलत है

जवाबों:


55

मेरे पास यह सटीक मुद्दा था और इसे हल करने के लिए मैंने क्रमशः और LinearLayoutsघर में दो अलग-अलग स्थान बनाए । वहाँ से मैंने दोनों को दूसरे में डाल दिया और उस कंटेनर को सेट कर दिया । मैं भी का वजन सेट कि रखे करने के लिए , लेकिन मुझे पता है कि अगर किसी भी प्रभाव पड़ता है नहीं है। वहां से, आप जिस भी ऊंचाई पर जाना चाहते हैं, नीचे के कंटेनर (जिसमें आपका बटन है) की ऊंचाई निर्धारित कर सकते हैं।ListViewButtonLinear Layoutandroid:orientationverticalLinearLayoutListView0.1

संपादित करें यह मेरा मतलब है:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

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

    <ListView
        android:id="@+id/ListView01"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:dividerHeight="2px"></ListView>
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="45px"
    android:background="@drawable/drawable"
    android:orientation="horizontal">

    <Button
        android:id="@+id/moreButton"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:background="@drawable/btn_more2"
        android:paddingRight="20px" />

</LinearLayout>

उपरोक्त समाधान स्क्रीन के नीचे बटन को ठीक करेगा।


सूची में सबसे नीचे बटन नाव करवाने के लिए, की ऊंचाई बदलने ListView01के लिए wrap_content:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

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

    <ListView
        android:id="@+id/ListView01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:dividerHeight="2px"></ListView>
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="45px"
    android:background="@drawable/drawable"
    android:orientation="horizontal">

    <Button
        android:id="@+id/moreButton"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:background="@drawable/btn_more2"
        android:paddingRight="20px" />
</LinearLayout>


मैं इसे <divHTML में टैग करने के लिए कुछ simliar के रूप में देखता हूं .. इसका सिर्फ एक आवरण और यह समाधान निश्चित रूप से काम करता है।
एंजेलो

और ओवरहेड के संबंध में, यह बहुत अलग नहीं है तो आप रिश्तेदार लेआउट के साथ क्या कर रहे हैं .. अभी आपके पास एक आउटपर रैपर है, और आप दूसरे को घोंसले में डाल रहे हैं .. मैं आपको केवल एक और घोंसले का सुझाव दे रहा हूं और सूची दृश्य को विभाजित कर रहा हूं। और ऊर्ध्वाधर रैखिक लेआउट में स्टैक प्रभाव बनाने वाले दो कंटेनरों में बटन। मैं इस बात पर जोर नहीं दे सकता कि यह एक कार्यशील समाधान है।
एंजेलो

1
हाँ! यह काम! नोट करना महत्वपूर्ण है, आपके पहले और दूसरे समाधान के बीच एकमात्र अंतर यह है कि लाइनरऑलआउट को wra_content की आवश्यकता है, इसलिए मैंने एक स्थापना प्रकार के साथ समाप्त किया: imgur.com/c9L1Z । टोआ किसी और को जो यह पता चलता है: भार महत्वपूर्ण है, लेकिन कोई भी मूल्य ले सकता है।
सैम

2
उस तरह के सभी विचारों को लपेटने की कोई आवश्यकता नहीं है - @ स्पार्कल के समाधान की
रिचर्ड ले मेसुरियर

क्या बटन लेआउट के लिए 45px या एक सटीक मान रखने की आवश्यकता है? मुझे इसके बजाय wra_content डालने की आवश्यकता है
मारियो

65

मैंने इस समस्या को कोड में हल किया, केवल सूची की ऊंचाई निर्धारित की अगर इसमें 5 से अधिक आइटम हों:

if(adapter.getCount() > 5){
        View item = adapter.getView(0, null, listView);
        item.measure(0, 0);         
        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, (int) (5.5 * item.getMeasuredHeight()));
        listView.setLayoutParams(params);
}

ध्यान दें कि मैंने किसी एकल आइटम की ऊंचाई को अधिकतम ऊंचाई से 5.5 गुना तक निर्धारित किया है, इसलिए उपयोगकर्ता को यह सुनिश्चित करने के लिए पता चल जाएगा कि कुछ स्क्रॉल करना है! :)


1
अच्छा उत्तर। उस कोड के साथ मैं अपने आइटम की ऊंचाई की खोज करता हूं, और अब मैं अपनी सूची का आकार यह दर्शाने के लिए निर्धारित कर सकता हूं कि मैं कितना इटेंस चाहता हूं। धन्यवाद।
डेरज़ू

3
यह सबसे अच्छा जवाब है। जब आप कोड की 5 लाइनों के साथ समस्या को हल कर सकते हैं तो नेस्टेड एक्सएमएल की 50 लाइनें क्यों लिखें?
ग्रेग एननिस

शुक्रिया @shaylh पूरी तरह से काम किया।
अंजू

भले ही मैंने XML समाधानों को अच्छी तरह से साफ किया था, फिर भी मैंने अपने अंतिम उत्पाद में इस विचार का उपयोग किया।
रिचर्ड ले मेसुरियर

1
@ जयआर टिप्पणी करने में कभी देर नहीं हुई
मांजा

21

अपने अंतिम संपादन पर, आपको बस android:layout_above="@+id/butt1"अपने ListView कोड को भी जोड़ना होगा ।

और आपको दिखाने के लिए (और यहां हर कोई जिसने पहले उत्तर देने की कोशिश की थी) जिसे आपको वास्तव में एक से अधिक उपयोग करने की आवश्यकता नहीं है RelativeLayout, यहां आपका सही कोड है :

   <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bkg">
    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="TextView1"
        android:layout_alignParentTop="true">
    </TextView>
    <TextView
        android:id="@+id/textView2"
        android:layout_below="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="TextView2"
        android:layout_centerHorizontal="true">
    </TextView>
    <Button
        android:id="@+id/butt1"
        android:text="string/string3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true">
    </Button>
    <ListView
        android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="2dip"
        android:layout_marginBottom="2dip"
        android:drawSelectorOnTop="false"
        android:visibility="visible"
        android:layout_below="@+id/textView2"
        android:layout_above="@+id/butt1" />
    </RelativeLayout>

और परिणाम , कुछ यादृच्छिक सूची का उपयोग कर:
यहां छवि विवरण दर्ज करें


1
आपकी मदद के लिए बहुत-बहुत धन्यवाद, लेकिन स्क्रीन के निचले हिस्से में बटन ठीक होने का सिर्फ इतना ही मतलब नहीं था। यह ListView के निचले भाग में होना चाहिए।
जेलिफ़िश

वास्तव में, लगता है कि इस बार LinearLayouts का एकमात्र समाधान हो सकता है कि आप क्या चाहते हैं; मैंने RelativeLayouts के साथ विभिन्न संयोजनों की कोशिश की है, और कोई भी वास्तव में काम नहीं करता है :( ... लेकिन मुझे खुशी है कि आप अपना जवाब पा गए हैं।
एडिनिया

1
धन्यवाद! यह एकदम सही है!
ग्विकारा

6

का उपयोग करते हुए LinearLayout, अपने की ऊंचाई सेट ListViewऔर Buttonकरने के लिए wrap_contentऔर करने के लिए एक वजन = 1 जोड़ने ListView। आप जैसा चाहते हैं, यह काम करना चाहिए।
और हाँ, सेट layout_gravityके Buttonलिएbottom


6

नेस्टेड कंटेनरों का उपयोग किए बिना ऐसा करने का एक तरीका मिला, जो एंजेलो के समाधान से प्रेरित था।

मैंने LinearLayoutएक ऊर्ध्वाधर अभिविन्यास के साथ उपयोग किया , जिसमें एक ListViewऔर एक बटन है। मैं के android:layout_weight="0.1"लिए निर्धारित किया है ListView

यह हमेशा सूची के नीचे बटन स्टिक प्राप्त करने का प्रबंधन करता है। और जब सूची बढ़ती है तो बटन स्क्रीन से दूर नहीं जाता है।

<ListView
    android:id="@+id/notes_list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.1"        
    />

<Button
    android:id="@+id/create_note_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"        
    android:onClick="onCreateButtonClicked"
    android:text="@string/create_notes"
    />

2
नहीं, बस कोशिश की और बटन स्क्रीन के नीचे रहता है, यह सूची के नीचे नहीं रहता है। :(
एडिनिया

@ एडिनिया यह कम से कम 4.4.3 पर पूरी तरह से काम करता है। अच्छा समाधान, स्पार्कल, अधिक वोट होना चाहिए।
रिचर्ड ले मेसियर

Humm..maybe आप अपने लेआउट में कुछ अन्य सेटिंग्स है? मैंने सिर्फ 4.4.3 के साथ एक नेक्सस 4 पर फिर से परीक्षण किया है, और बटन लेआउट के निचले भाग में रहता है, सूची का नहीं, यह सूची में नहीं रहता है।
एडिनिया

2
@ रिचर्ड ली मेसुरियर दरअसल, लिनियरलैट के android:layout_height="wrap_content" लिए, आपके समाधान के रूप में, यह पूरी तरह से काम कर रहा है, और न केवल 4.4.3 पर, बल्कि चूंकि स्पार्कल ने इसका उल्लेख नहीं किया, इसलिए मैंने match_parentपहले भी इसके साथ प्रयास किया ।
एडिनिया

पाई पर भी काम कर रहे हैं। +1
जुबैर यूनास

5

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

यह वैसा ही होगा यदि आप a LinearLayout: a का उपयोग उस तरीके को प्राप्त करने के लिए करते हैं जो आप चाहते हैं कि आप ListViewऊँचाई = 0 और वजन = 1 पर सेट करें , और बटन की ऊँचाई के लिए = wra_content और weight = 0। (दोनों को cover_content पर सेट करना, जैसा कि user639183 ने कहा है, यह ListViewऊंचाई को सीमित नहीं करेगा )।


हाँ, यह सीमित कर देगा ListViewकी ऊंचाई
ernazm

@ user639183 ने अभी-अभी कोशिश की है, आप सही हैं मुझे क्षमा करें, मैं इस बारे में निश्चित था।
30st11

मैंने सुझाव के अनुसार वजन बदल दिया (पहले, मेरे पास सूची दृश्य वजन = 2 और बटन वजन = 1 था, आश्चर्य है कि यह काम क्यों नहीं किया?) प्रभाव बहुत दिलचस्प है: बटन अब केवल स्क्रीन से आधे रास्ते से बाहर धकेल दिया जाता है। वास्तव में, मुझे यह रहने के लिए मिल सकता है जहां मैं इसे कुछ "एंड्रॉइड: लेआउट_मारगिनबॉटम" जोड़कर चाहता हूं। हालाँकि, मैं भी मैक्सिम दृष्टिकोण की कोशिश कर सकता हूँ और देख सकता हूँ कि क्या काम कर रहा है।
जेलिफ़िश

@ जेलीफ़िश: मुझे नहीं पता, मेरी निश्चितता @ उपयोगकर्ता 639183 द्वारा ध्वस्त कर दी गई थी। विचार यह है कि पूरी ऊंचाई दो विचारों द्वारा साझा की जाएगी। उन्हें जितने शेयर मिलते हैं, वह उनके वजन के हिसाब से दिया जाता है, इसलिए 1-0 -> पहले वाले को सब कुछ (2-1 दूसरे को 1/3 जगह देगा)। मैंने सोचा था कि स्क्रॉलिंग दृश्य पर रैप_ कॉन्टेंट सेट करना इसकी सामग्री जितना अधिक होगा। हालाँकि .. क्या आपने fill_parent में बाहरी लेआउट सेट किया है?
बिगस्टोन

यह वास्तव में अजीब है कि एक नेस्टेड रिलेटिवआउट (जैसा कि मैक्सिम द्वारा सुझाया गया है) काम नहीं करता है। मैं बस इसे ऊपर पोस्ट कर सकता हूं, जैसा कि मुझे लग रहा है कि मैं अभी कुछ याद कर रहा हूं ...
जेलिफ़िश

2

आप शायद नेस्टेड कंटेनरों का उपयोग करके यह काम कर सकते हैं। यह संभव है कि आपको बटन को एक दूसरे (आंतरिक) कंटेनर में लपेटने की आवश्यकता हो, ताकि यह अधिक स्थान ले, और बस बटन को आंतरिक कंटेनर के शीर्ष पर संरेखित करें।

इस तरह संभव कुछ:

अंतरंग परिस्थिति

-- सूची दृश्य

-- अंतरंग परिस्थिति

---- बटन

दो कंटेनरों पर विभिन्न संरेखण विकल्पों का उपयोग करना, आपको यह काम करने में सक्षम होना चाहिए।


मुझे लगता है कि एक रिश्तेदारलेयआउट का उपयोग करना सबसे अच्छा समाधान है, लेकिन मैं वास्तव में यह नहीं देख सकता कि आप नेस्टेड कंटेनरों का उपयोग क्यों करेंगे, जब आप बस android:layout_marginTop="30dip" बटन के लिए कुछ का उपयोग कर सकते हैं , यदि आप सूची और बटन के बीच अधिक स्थान चाहते हैं, उदाहरण के लिए।
एडिनिया

प्रश्न में, ओपी ने कहा कि यदि वह सूची दृश्य के सापेक्ष बटन की स्थिति को कड़ाई से बनाता है, तो सूची दृश्य पर्याप्त रूप से लंबा हो जाने पर यह स्क्रीन से दूर चला जाता है। इस तरह के मामलों में आपको नेस्टेड कंटेनरों के साथ छल करना पड़ता है
रिच

2

यह इसे करने का सबसे साफ तरीका है:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
  <ListView
      android:id="@+id/ListView01"
      android:layout_width="fill_parent"
      android:layout_height="0dp"
      android:layout_weight="1"
      android:dividerHeight="2px">
  </ListView>
  <FrameLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:background="@drawable/drawable"
      >
    <Button android:background="@drawable/btn_more2"
        android:id="@+id/moreButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:paddingRight="20px"
        />    
  </LinearLayout>
</LinearLayout>

यह एंजेलोस के समाधान के समान है, लेकिन आपको सूची दृश्य को लपेटने वाले linearlayout की आवश्यकता नहीं है। इसके अलावा आप एक FrameLayout का उपयोग कर सकते हैं जो बटन को लपेटने के लिए LinearLayout की तुलना में हल्का है।


2

इस विचार को बहुत अच्छे समाधानों में रेखांकित किया गया है:

वे दोनों कम से कम v4.4.3 पर पूरी तरह से काम करने लगते हैं।

मुझे अभी भी इसे जांचने और प्रत्येक विधि की पुष्टि करने के लिए कुछ समय टेस्ट कोड लिखने में बिताना पड़ा। नीचे स्व निहित है, न्यूनतम परीक्षण कोड आवश्यक है।


लेआउट स्पार्कल के समाधान पर आधारित है, क्योंकि इसमें कम नेस्टेड लेआउट शामिल है। वर्तमान LINT चेकों को प्रतिबिंबित करने के लिए भी अपडेट किया गया है।

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    tools:context="MainActivity" >

    <ListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <Button
        android:id="@+id/btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Grow List"
        tools:ignore="HardcodedText" />

</LinearLayout>

गतिविधि अपने लिए समाधान का परीक्षण करने के लिए बॉयलरप्लेट कोड प्रदान करती है।

public class MainActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ListView listview = (ListView)findViewById(R.id.listview);
        final ArrayAdapter<String> adapter = 
                new ArrayAdapter<String>(this,
                                         android.R.layout.simple_list_item_1,
                                         new ArrayList<String>());
        adapter.setNotifyOnChange(true);
        listview.setAdapter(adapter);

        findViewById(R.id.btn).setOnClickListener(new View.OnClickListener()
        {

            @Override
            public void onClick(View v)
            {
                int count = adapter.getCount();
                adapter.add(String.valueOf(count));
                listview.setSelection(count);
            }
        });
    }
}

इसे "सामुदायिक विकि" के रूप में जोड़ने या सुधारने के लिए स्वतंत्र महसूस करें।


1

नीचे में बटन के साथ RelativeLayout का उपयोग करने का प्रयास करें। लेआउट की ऊँचाई को "wra_content" के रूप में सेट करें। मैंने कोशिश नहीं की है। सिर्फ विचार


मैं वास्तव में सोचा था कि यह काम करना चाहिए, लेकिन ऐसा लगता है कि यह नहीं है। लेआउट बचे हुए सभी स्थान को भर देता है, जैसे कि ऊंचाई को match_parent पर सेट किया गया था। हालांकि समझ में नहीं आता है।
जेलिफ़िश

1

LinearLayout में, बस android:layout_weight="1"आपको सूची दृश्य में जोड़ें


0

निम्नलिखित है जो मेरे लिए काम किया ...

 if(adapter.getCount() > 3){
                    View item = adapter.getView(0, null, impDateListView);
                    item.measure(0, 0);         
                    LayoutParams params = impDateListView.getLayoutParams();
                    params.width = LayoutParams.MATCH_PARENT;
                    params.height = 3 * item.getMeasuredHeight();
                    impDateListView.setLayoutParams(params);


                }

नोट: params.width = ... सेट करने की आवश्यकता भी ...

उपरोक्त उदाहरण तब है जब आप TableRow के अंदर TableRow और ListView का उपयोग करते हैं ...


0

रैखिक लेआउट में सामग्री लपेटें

सूची में जोड़ें देखें: Android: लेआउट_वेट = "1"

अपने बटन में निर्धारित ऊंचाई निर्धारित करें

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical">

<ListView
    android:id="@+id/my_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1">
</ListView>

 <Button
    android:text="Button"
    android:layout_width="match_parent"
    android:layout_height="50dp"/>

</LinearLayout>

0

यदि आप सूची के नीचे की सामग्री को नीचे ले जाना चाहते हैं, क्योंकि तत्व सूची में जोड़े जाते हैं, तो इस समाधान का प्रयास करें:

सूची दृश्य के निचले भाग में सकारात्मक पैडिंग और "पाद" के शीर्ष पर नकारात्मक पैडिंग जोड़ें। यह एक रैखिक लेआउट या एक रिश्तेदार लेआउट में काम करेगा।

<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="50dp"/>

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="-50dp"/>

-1

चूंकि कोई मैक्सहाइट विशेषता नहीं है, इसलिए आपका सबसे अच्छा दांव या तो लिस्ट व्यू की ऊंचाई को निर्धारित मूल्य पर सेट करना है, या उपयोग करना है wrap_content


-2

मैं एक स्क्रॉल दृश्य के अंदर ListView डालकर इसे हल किया। लिंट को यह पसंद नहीं था, लेकिन मिनहाइट जोड़कर और फिल्प व्यूपोर्ट को सच करने के लिए, मेरे पास एक अच्छा परिणाम है।

    <ScrollView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="1dp"
        android:layout_marginRight="1dp"
        android:minHeight="100dp"
        android:fillViewport="true"
        android:fadeScrollbars="false"
        android:paddingTop="2dp" 
        android:orientation="vertical"
        android:scrollbarAlwaysDrawVerticalTrack="true" >

        <ListView
            android:id="@+id/workoutAElistRoutines"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="fill_vertical"
            android:background="@drawable/dialog_inner_border_tan"
            android:choiceMode="singleChoice"
            android:orientation="vertical"
            android:paddingLeft="3dp"
            android:paddingRight="3dp" >

        </ListView>
    </ScrollView>        

मैंने इस दृष्टिकोण की कोशिश की, यहां तक ​​कि यह सूची के आकार को भी सीमित करता है, यह मुझे सूची को स्क्रॉल करने की अनुमति नहीं देता है, जो अजीब है। तुम जानते हो क्यों?
एडुआर्डो

7
कभी भी एक स्क्रॉल दृश्य के अंदर एक सूची दृश्य रखो!
10

हां, कभी भी एक स्क्रॉल दृश्य के अंदर एक सूची दृश्य न डालें। लेकिन इस "हैक" के साथ यह संभव है ... stackoverflow.com/a/14577399/1255990
लियोनार्डो कार्डसो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.