पिछले तत्व में ListView के निचले भाग को जोड़ना


82

मुझे जटिल आइटम पृष्ठभूमि के साथ लिस्ट व्यू जोड़ने की आवश्यकता है: ऊपर और नीचे के सम / विषम और गोल कोनों के लिए अलग। यह इस तरह दिख रहा है:

ऊपर से देखें

मैंने यह सब सामान स्तर-सूची के माध्यम से लागू किया है, लेकिन एक और चीज है जो मैं करना चाहता हूं। अब नीचे का आइटम स्क्रीन के नीचे के पास है। कुछ जगह जोड़ना बेहतर है।

सूची दृश्य नीचे अच्छा नहीं लग रहा है

मैं ListView में नीचे का मार्जिन नहीं जोड़ना चाहता, मुझे केवल अंतिम आइटम के लिए मार्जिन की आवश्यकता है।

मैं ऐसा करने के लिए देख रहा हूं:

फ़ुटबाल

एक प्रकार की हैक - सूची में रिक्त TextView के साथ पाद लेख जोड़ें। लेकिन पाद काफी अस्थिर चीजें हैं, वे आम तौर पर अधिसूचित के बाद गायब हो जाते हैंचैनेचैट और उन्हें वापस लाने का कोई तरीका नहीं है

पारदर्शी पिक्सेल के साथ छवि

मैंने डिज़ाइनर से कहा कि पारदर्शी पिक्चर्स को बैकग्राउंड रिसोर्स में जोड़ें। दुर्भाग्य से, इस मामले में ऊर्ध्वाधर केंद्र पूरी तरह से टूट गया है। उदाहरण के लिए, इस तरह 9patch है:

9patch

और इस तरह लेआउट:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
        >
    <!-- View with background with transparent pixels on bottom -->
    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"
                  android:id="@+id/item"
                  android:background="@drawable/some_bgr"
                  android:padding="10dp"
            >
        <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"
                  android:text="Title"
                  android:layout_gravity="center"
                  android:textSize="18sp"
                />
        <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
                  android:text="Detail"
                  android:layout_gravity="center"
                  android:textSize="18sp"
                />
    </LinearLayout>

    <!-- Just for marking place took by view -->
    <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"
                 android:layout_below="@id/item"
                 android:background="#88ff55"
            />
</RelativeLayout>

परिणाम:

परिणाम

जैसा कि आप देख रहे हैं, केंद्रित काम नहीं कर रहा है। दुर्भाग्य से। (BTW, यदि यह 9patch को TextView की पृष्ठभूमि के रूप में निर्दिष्ट करता है, तो सेंटिंग अच्छा काम करता है। यदि आप किसी भी लेख को जानते हैं, तो इसे समझाते हुए, कृपया मुझे बताएं।)

एडेप्टर कार्यान्वयन में अंतिम आइटम के लिए नीचे मार्जिन जोड़ें

यह काम करना चाहिए, लेकिन अज्ञात कारण से मुझे अभी भी यह काम नहीं मिल रहा है। मुझे यह तरीका पसंद नहीं है, क्योंकि मुझे कोड में आयामों को संशोधित करना पसंद नहीं है।

इसलिए

पहले से ही काल्पनिक तरीका है - विशेष बिटमैप और मार्जिन के साथ कुछ एक्सएमएल ड्रा करने योग्य निर्माण करें। ड्रॉबल्स कॉन्सेप्ट के अनुसार यह संभव होना चाहिए, लेकिन मुझे कार्यान्वयन नहीं मिल रहा है। किसी को पता चल सकता है?

कोई अन्य विचार?


आप केवल अंतिम आइटम के बाद एक मार्जिन जोड़ना चाहते हैं?
गूफी

हाँ। सवाल बिल्कुल ऐसा लगता है
darja

कृपया नीचे मेरे उत्तर की जाँच करें
नासमझ

मैं वास्तव में पाद दृष्टिकोण का उपयोग करने पर विचार करूंगा। मैंने उन्हें कभी खुद से गायब होते नहीं देखा, खासकर कॉल करने के बाद नहीं notifyDataSetChanged()। हो सकता है कि आप कुछ और गलत कर रहे हों। एक पाद लेख द्वारा प्रबंधित किया जाता है ListViewऔर एक एडाप्टर के वास्तविक डेटासेट के साथ बहुत कम किया जाता है।
एमएच।

सबसे अच्छा तरीका है [ stackoverflow.com/questions/6288167/… [1]: stackoverflow.com/questions/6288167// इसने वास्तव में मेरी मदद की
बण्योद

जवाबों:


280

अपने में ListView, सेट एक paddingBottomऔर clipToPadding="false"

  <ListView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:paddingBottom="8dp"
      android:clipToPadding="false"
      android:scrollbarStyle="outsideOverlay"/>
  • इसके लिए भी काम करता है RecyclerView

  • android:scrollbarStyle="outsideOverlay"यदि आप स्क्रॉल बार को गद्देदार क्षेत्र में ओवरफ्लो नहीं करना चाहते हैं तो ही उपयोग करें।


नीचे से मेरा 8dp क्लिप किया गया है ... वास्तव में मैं केवल पिछले आइटम के लिए 8dp नीचे चाहता हूं..तो क्या करना है?
एलिजाबेथ

2
@AndroidBeginner मुझे समझ में नहीं आता कि आप क्या चाहते हैं। यह वही करता है।
घड़ीसाज़

12
जोड़ने के लिए मत भूलना android:scrollbarStyle="outsideOverlay"अपने स्क्रॉलबार गद्दी के अंदर नहीं
रहता है

1
रंगों से थोड़ी परेशानी हो सकती है। बॉटम पैडिंग में
लिस्टव्यू

क्या हम इसका उपयोग करके SwipeRefreshLayout रिफ्रेश इंडिकेटर का प्रबंधन कर सकते हैं?
हेमंत कौशिक

8

इस तरह अपनी सूची में एक खाली पाद लेख जोड़ें:

TextView empty = new TextView(this);
empty.setHeight(150);
listview.addFooterView(empty);

इसके लिए मैं अनुशंसा करता हूं: listview.addFooterView (रिक्त, डेटा: शून्य, isSelectable: false);
साइमन

4

यदि आप चाहें तो आप इसे कोड से भी कर सकते हैं, उदाहरण के लिए मैं यहाँ EditText की विभिन्न स्थितियों पर प्रतिक्रिया करता हूँ:

   if(s.toString().length()>0)
   {
      contacts_lv.setClipToPadding(false);
      contacts_lv.setPadding(0,0,0,270*screenDensity);
   }
   else
   {
      contacts_lv.setClipToPadding(true);
      contacts_lv.setPadding(0,0,0,0);
   }

2

क्लॉकस्मिथ का जवाब सबसे अच्छा और बहुत चालाक है। आप एक खाली पाद दृश्य भी बना सकते हैं।


1
पहला समाधान काम नहीं किया, लेकिन आपके सुझाव ने किया, वास्तव में अच्छा विचार आपको धन्यवाद देता है
Badr

1

इन दो पंक्तियों को अपनी सूची में जोड़ें XML कोड:

android:transcriptMode="alwaysScroll"  
android:stackFromBottom="true"

0

एक और उपाय यह हो सकता है कि आप निश्चित ऊंचाई के साथ एक नकली दृश्य बनाएं।

GetViewCount 2 में अपने एडेप्टर में।

GetCount में अपनाData.size + 1 लौटाएं।

यदि तत्व अंतिम तत्व 2 है तो getViewType चेक करें;

Mockview को पॉप्युलेट करने के लिए getView में इस प्रकार का उपयोग करें।


-2

मुझे लगता है कि आप केवल अंतिम आइटम में मार्जिन जोड़ना चाहते हैं:

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


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

आप इस तरह से क्यों नहीं करना चाहते हैं?
गूफी

कृपया प्रश्न में स्पष्टीकरण देखें।
दारू

कोई अन्य विचार नहीं है - ऐसा लगता है कि एक ही रास्ता है
darja

@Goofy आप सूची के अंतिम पंक्ति दृश्य में मार्जिन कैसे जोड़ते हैं?
वृनौआ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.