2015-03-31 10 views
12

Google की नई सामग्री डिज़ाइन उस स्क्रीन पर मुख्य कार्रवाई के लिए उपयोगकर्ता को ध्यान आकर्षित करने के लिए फ़्लोटिंग एक्शन बटन का उपयोग करने की अनुशंसा करती है। सूची दृश्य में इसके बहुत सारे उदाहरण हैं।फ़्लोटिंग एक्शन बटन अन्य घटकों को अवरुद्ध करना

अब, मान लें कि आपकी सूची दृश्य में स्क्रीन भरने के लिए पर्याप्त चीज़ें हैं, जिससे स्क्रॉलिंग असंभव हो रही है। यदि आपकी सूची वस्तुओं में एक निश्चित घटक है जो उपयोगकर्ता के साथ बातचीत कर सकता है, उदाहरण के लिए एक स्विच या पसंदीदा स्टार, यह संभव है कि फ़्लोटिंग एक्शन बटन इस घटक को अवरुद्ध कर रहा हो। हमें इस मामले को कैसे संभालना चाहिए?

संपादित: यह वास्तव में हमेशा अपनी सूची में अंतिम आइटम के साथ होता है

उत्तर

6

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

0

सूची लोड करते हैं, आप एक झंडा बना सकते हैं और यदि सूची में आइटम स्क्रीन में पिछले दिखाई मद है पा सकते हैं , फ्लोटिंग बटन छुपाने से।

उपयोग इस लगाने के लिए अंतिम दृश्यमान आइटम

int currentPosition = list.getLastVisiblePosition(); 

आप अगर 7 मद है आपकी सूची में अंतिम दिखाई item.i.e के अंतिम संख्या मिल जाएगा, की तुलना में यह currentPosition = 7 का मूल्य प्राप्त होगा;

एक बार जब आप आइटम है कि आपकी स्क्रीन में फिट, अब झंडा

if(listAdapterItemsArray.get(position) == currentPosition) { 
    //hide button 
} else { 
    //nothing 
} 
+0

क्या होगा यदि आपके पास सूची में केवल 7 आइटम हैं, तो वे सभी प्रदर्शित होते हैं, सूची स्क्रॉल नहीं की जा सकती है लेकिन आप बटन को छुपाते हैं, इसलिए यह अंतिम आइटम को ओवरलैप नहीं करता है? – stan0

+0

बिल्कुल। बस स्क्रीन पर पर्याप्त फ़िट होने पर बटन को छुपाएं। –

+0

क्या आपको बटन की कार्यक्षमता की कमी नहीं होगी? – stan0

1

मैं अभी इस मुद्दे था, और मैं इसे इस तरह से हल:

public void addBlankSpace(ListView listView) 
{ 
    Space space = new Space(listView.getContext()); 
    space.setMinimumHeight(Core.dpToPx(50)); 
    listView.addFooterView(space); 
} 

और मुझे लगता है कि वहाँ हमेशा एक बेहतर तरीका है। यह जांचने की तरह कि आपको इसकी आवश्यकता भी है। और केवल तब इसे प्रदर्शित करने के लिए। लेकिन अभी के लिए, यह सरल कोड बस ठीक काम करता है।

public static int dpToPx(int dp) 
{ 
    return (int)(dp * Resources.getSystem().getDisplayMetrics().density); 
} 

या हम सिर्फ कुछ गद्दी जोड़ सकते हैं::

listView.setPadding(0, 0, 0, Core.dpToPx(50)); 
+1

क्यों एक्सएमएल का उपयोग न करें: 'पैडिंगबॉटम = "50 डीपी" '? – Natix

0

आप गूगल कार्रवाई बटन की स्थिति छोड़ दिया करने के लिए सेट कर सकते हैं शीर्ष

 `android:layout_gravity="top|left"` 
का उपयोग कर

और यहाँ रूपांतरण समारोह है

इस तरह यह अच्छा लग रहा है और कुछ भी छिपा नहीं है।

+0

'शीर्ष | बाएं' का उपयोग करके पहले सूची तत्व के शीर्ष पर बटन चला जाता है। – althaus

0

मैं बस ऐसा करता हूं जो मुझे लगता है कि Google जीमेल ऐप कर रहा है और रीसाइक्लिंग व्यू (या सूचीदृश्य) में पैडिंग जोड़ता है।

<android.support.v7.widget.RecyclerView 
android:id="@+id/my_recyclerview" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:clipToPadding="false" 
android:paddingBottom="100dp" /> 
संबंधित मुद्दे