से ListFragment लेआउट कैसे एक ListFragment (समर्थन v4 पुस्तकालय का) एक्सएमएल से लेआउट बनाने के लिए? ListFragment
अपने लेआउट प्रोग्रामेटिक रूप से सेट अप करता है, इसलिए यदि आप इसे संशोधित करना चाहते हैं, तो आपको व्यू/निकालने के दृश्य के साथ गड़बड़ करने की आवश्यकता है।एक्सएमएल
एक्सएमएल
उत्तर
मैंने बनाया गया लेआउट xml में परिवर्तित कर दिया है, तो आप अपने विजेट को जोड़/हटा सकते हैं या उदा। pulltorefresh
समाधान जोड़ें। आपको आवश्यक आईडी नहीं बदलनी चाहिए। कुछ विगेट्स के लिए आवश्यक आंतरिक आईडी के कारण एक सहायक फ़ंक्शन को कॉल करने की आवश्यकता होती है और इसे समर्थन v4 नेमस्पेस में होना आवश्यक है क्योंकि स्थिरांक डिफ़ॉल्ट दृश्यता के साथ आंतरिक हैं।
list_loader.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/progress_container_id"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:visibility="gone" >
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<FrameLayout
android:id="@+id/list_container_id"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/empty_id"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawSelectorOnTop="false" >
</ListView>
</FrameLayout>
</FrameLayout>
और वर्ग ListFragmentLayout
android.support.v4.app
में
package android.support.v4.app;
import your.package.R;
import android.view.View;
public class ListFragmentLayout
{
public static void setupIds(View view)
{
view.findViewById(R.id.empty_id).setId(ListFragment.INTERNAL_EMPTY_ID);
view.findViewById(R.id.progress_container_id).setId(ListFragment.INTERNAL_PROGRESS_CONTAINER_ID);
view.findViewById(R.id.list_container_id).setId(ListFragment.INTERNAL_LIST_CONTAINER_ID);
}
}
अपने टुकड़ा है कि फैली
ListFragment
में
(अपनी परियोजना में, आप समर्थन v4 जार संशोधित करने की जरूरत नहीं है)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.list_loader, container, false);
ListFragmentLayout.setupIds(view);
return view;
}
आपका मतलब है कि इस बदलाव के साथ यह काम करेगा जैसे कि यह कस्टम दृश्य नहीं है? – seb
आप भयानक आदमी हैं! – seb
मेरे लिए काम नहीं करता है। ऐसा लगता है कि मैं समर्थन lib के पुराने संशोधन का उपयोग कर रहा हूँ। इसमें ListFragmentLayout क्लास भी शामिल नहीं है। मैं इस दृष्टिकोण का उपयोग करने का सुझाव नहीं देता हूं। भविष्य में समर्थन lib के संशोधन में यह काम नहीं कर सकता है। – WindRider
एंड्रोई से घ एसडीके (ListFragment) (http://developer.android.com/reference/android/app/ListFragment.html):
सार्वजनिक देखें onCreateView (LayoutInflater inflater, ViewGroup कंटेनर, बंडल savedInstanceState)
एक सरल सूची दृश्य पर लौटने के लिए डिफ़ॉल्ट कार्यान्वयन प्रदान करें। उप-वर्ग अपने स्वयं के लेआउट के साथ प्रतिस्थापित करने के लिए ओवरराइड कर सकते हैं। यदि ऐसा करने पर, लौटाए गए दृश्य पदानुक्रम में एक सूची दृश्य होना चाहिए जिसका आईडी android.R.id.list है और वैकल्पिक रूप से एक भाई दृश्य आईडी है android.R.id.empty जो सूची खाली होने पर दिखाया जाना है।
यदि आप अपनी खुद की कस्टम सामग्री के साथ इस विधि को ओवरराइड कर रहे हैं, तो अपनी लेआउट फ़ाइल में मानक लेआउट list_content सहित विचार करें, ताकि आप ListFragment के सभी मानक व्यवहार को बनाए रखना जारी रख सकें। विशेष रूप से, यह वर्तमान में अंतर्निहित अनिवार्य प्रगति स्थिति दिखाने का एकमात्र तरीका है।
तो जब आप एक FragmentList ओवरराइड के लिए अपना खुद का लेआउट.एक्सएमएल चाहते हैं तो देखें और अपना खुद का लेआउट बढ़ाएं।
उदाहरण के लिए:
एक एंड्रॉयड लेआउट (yourlistlayout.xml) बनाएँ और स्थिति है जहाँ आप अपने ListFragment दिखाना चाहते हैं पर निम्नलिखित एक्सएमएल डाल दिया।
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.yourlistlayout, null);
return v;
}
यह समर्थन लाइब्रेरी के साथ काम नहीं करेगा क्योंकि आईडी अलग हैं – sherpya
- 1. एक्सएमएल क्रमबद्धता - एक्सएमएल रूट
- 2. एक्सएमएल
- 3. एक्सएमएल
- 4. एक्सएमएल
- 5. एक्सएमएल
- 6. एक्सएमएल
- 7. एक्सएमएल
- 8. एक्सएमएल
- 9. एक्सएमएल
- 10. एक्सएमएल
- 11. एक्सएमएल
- 12. एक्सएमएल
- 13. एक्सएमएल
- 14. एक्सएमएल
- 15. एक्सएमएल
- 16. एक्सएमएल
- 17. एक्सएमएल
- 18. एक्सएमएल
- 19. एक्सएमएल
- 20. एक्सएमएल
- 21. एक्सएमएल
- 22. एक्सएमएल
- 23. एक्सएमएल
- 24. एक्सएमएल
- 25. एक्सएमएल
- 26. एक्सएमएल
- 27. एक्सएमएल
- 28. एक्सएमएल
- 29. एक्सएमएल
- 30. एक्सएमएल
कृपया इस तो यह स्पष्ट है कि समस्या क्या था (एक सवाल के रूप में पोस्ट) को संपादित करने और जवाब अनुभाग में नीचे समाधान कर दिया:
अपने ListFragment कक्षा मेंनिम्नलिखित कोड डालें । –
क्या आपके पास संदर्भ देने के लिए एक उदाहरण है? – sherpya
पोस्ट सिर्फ एक प्रश्न और उत्तर के रूप में होना चाहिए। यह एक समाधान की तरह दिखता है, लेकिन यह स्पष्ट नहीं है कि मूल प्रश्न क्या था। –