दिलचस्प पोस्ट
जावा एप्लिकेशन में एक फ़ाइल एसोसिएशन का उपयोग करना IDENTITY_INSERT को बंद करने के लिए सेट किया गया है जब टेबल 'तालिका' में पहचान कॉलम के लिए स्पष्ट मान सम्मिलित नहीं किया जा सकता सी # में उपयोगकर्ता प्रमाणीकरण के साथ कर्ल एक टेम्पलेट पैरामीटर एक दोस्त बनाना? स्प्रिंग एमवीसी टेस्ट का प्रयोग यूनिट टेस्ट मल्टीपार्ट पोस्ट अनुरोध से करें चौराहों की गणना करने के लिए कुशल गणित एल्गोरिथम स्प्रिंग वेब ऐप संदर्भ के लिए प्रोग्रामिंग बीन जोड़ें UIScrollView अनंत स्क्रॉलिंग जावास्क्रिप्ट, सेट टाइमआउट लूप? आधिकारिक डिजाइन लाइब्रेरी से फ़्लोटिंगएक्शनबटन के साथ इन्फ्लेट एक्सप्शन क्या स्थिर सूचकांक सी # में समर्थित नहीं हैं? डीजेंगो की लॉगिन बनाने का सबसे अच्छा तरीका_निर्धारित किया गया सी # एचटीटीपीएलस्टनर के साथ यूआरएल मैपिंग बिना लोड किए गए लोड प्लस के यूआईवीयूआईयूआईयूआईयूआई नियंत्रक के साथ भार-दृश्य और दृश्यडायडलोड का उचित उपयोग मैं एक सॉल्टर / ल्यूसीन स्कोर कैसे सामान्य कर सकता हूं?

Android पर ListView की सीमा की सीमा

मैं एक ListView तहत एक बटन दिखाने के लिए चाहता हूँ समस्या यह है, यदि ListView विस्तारित हो जाता है (आइटम जोड़े गए हैं …), बटन को स्क्रीन से बाहर धकेल दिया जाता है

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

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

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

SetHeight-method और कुछ आवश्यक स्थान की गणना करने के अलावा कोई विचार?


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

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

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

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

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

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

    एंजेलोस ने अपनी प्रारंभिक पोस्ट में यह भी बताया कि वह सुनिश्चित नहीं था कि android:layout_weight="0.1" परम LinearLayout ListView चारों ओर रैखिक लयआउट में कोई प्रभाव पड़ा; मैं बस कोशिश की और यह वास्तव में करता है! बिना, बटन फिर से स्क्रीन के बाहर धकेल दिया जाता है

Solutions Collecting From Web of "Android पर ListView की सीमा की सीमा"

मुझे यह सटीक मुद्दा था और इसे हल करने के लिए क्रमशः ListView और Button को घर बनाने के लिए मैंने दो अलग-अलग LinearLayouts बनाया वहां से मैंने एक और Linear Layout में दोनों रखा और सेट किया कि कंटेनर की android:orientation vertical android:orientation । मैंने LinearLayout के वजन को भी सेट किया है, जो कि LinearLayout को 0.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:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.1" > <ListView android:id="@+id/ListView01" android:layout_height="fill_parent" android:layout_width="fill_parent" android:dividerHeight="2px"> </ListView> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="45px" android:background="@drawable/drawable" > <Button android:background="@drawable/btn_more2" android:id="@+id/moreButton" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true" android:paddingRight="20px" /> </LinearLayout> </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:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.1" > <ListView android:id="@+id/ListView01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:dividerHeight="2px"> </ListView> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="45px" android:background="@drawable/drawable" > <Button android:background="@drawable/btn_more2" android:id="@+id/moreButton" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true" android:paddingRight="20px" /> </LinearLayout> </LinearLayout> 

मैंने इस समस्या को कोड में हल किया, केवल सूचीदृश्य की ऊंचाई तय करनी है, अगर इसमें 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 गुना निर्धारित किया है, इसलिए उपयोगकर्ता को पता चल जाएगा कि कुछ स्क्रॉल करना है! 🙂

आपके अंतिम संपादन पर, आपको सिर्फ अपने ListView कोड में android:layout_above="@+id/butt1"

और आपको दिखाने के लिए (और यहां हर कोई जो पहले एक उत्तर की कोशिश की थी) कि वास्तव में आपको एक से अधिक 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> 

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

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

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

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

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

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

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

 <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" /> 

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

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

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

— सूची दृश्य

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

—- बटन

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

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

 <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> 

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

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

  • एंजेलस
  • चमक

वे दोनों कम से कम 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); } }); } } 

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

नीचे दिए गए बटन के साथ RelativeLayout का उपयोग करने का प्रयास करें "Wrap_content" के रूप में लेआउट की ऊंचाई निर्धारित करें मैंने इसे कोशिश नहीं की है बस विचार

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

मेरे लिए क्या काम किया गया है …

  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 का उपयोग करते हैं …

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

सूची देखें में जोड़ें: एंड्रॉइड: layout_weight = "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> 

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

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

 <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"/> 

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

मैंने इसे ScrollView के अंदर ListView डालकर इसे हल किया लिंट को यह पसंद नहीं था, लेकिन एक न्यूनतम ऊंचाई जोड़कर और fillViewport को सही पर सेट करते हुए, मेरा एक अच्छा परिणाम है

  <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>