2014-10-10 19 views
8

के साथ एक और टुकड़ा ओवरले करें मान लें कि मेरे पास 2 टुकड़े हैं, जिनमें एक सूची दृश्य है और दूसरे में लोडिंग टेक्स्ट होता है। मैं चाहता हूं कि जब मैं एक सूची आइटम पर क्लिक करता हूं, तो लोडिंग टेक्स्ट खंड सूची दृश्य के शीर्ष पर दिखाई देता है। मैंने लोडिंग टेक्स्ट पृष्ठभूमि की अस्पष्टता को समायोजित किया है: एंड्रॉइड: पृष्ठभूमि = "# 33 एफएफएफएफएफएफ"। लेकिन फिर भी यह एक ठोस ग्रे पृष्ठभूमि पर लोडिंग पाठ दिखाता है।एंड्रॉइड: फ्रैगमेंट अर्ध पारदर्शी

<?xml version="1.0" encoding="utf-8"?> 
<ListView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@android:id/list" 
    android:background="#e8e9ee" 
    android:divider="#ccc" 
    android:dividerHeight="1dp"/> 

टुकड़ा है कि एक TextView शामिल हैं:

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:text="@string/loadingText" 
    android:id="@+id/loadingText" 
    android:textColor="#e8e9ee" 
    android:background="#33FFFFFF" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" /> 

मेरे जावा कोड मूल रूप से कुछ इस तरह है: onItemClick:

FragmentTransaction transaction=manager.beginTransaction(); 
transaction.show(loadingFragment); 
transaction.commit(); 

उत्तर

11

मैंने किया है और यह पूरी तरह से है, लेकिन उपयोग करने के बजाय काम करता है। शो मैंने इस्तेमाल किया .add:

गतिविधि लेआउट:

<RelativeLayout 
    android:id="@+id/layout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_marginRight="5dp" 
    android:layout_marginEnd="5dp"> 

    <FrameLayout 
     android:id="@+id/list_view_container" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true"> 
    </FrameLayout> 

    <FrameLayout 
     android:id="@+id/loading_text_fragment_container" 
     android:layout_width="300dp" 
     android:layout_height="300dp" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true"> 
    </FrameLayout> 

</RelativeLayout> 

गतिविधि में:

सबसे पहले अपने सूची दृश्य जोड़ें:

ListViewFragment listViewFragment = new ListViewFragment(); 
fragmentManager.beginTransaction().add(R.id.list_view_container, listViewFragment).commit(); 

फिर लोड हो रहा है पाठ:

// Create a new Fragment to be placed in the activity layout 
YourFragment yourFragment = new YourFragment(); 

// Add the fragment to the 'loading_text_fragment_container' FrameLayout 
fragmentManager.beginTransaction().add(R.id.loading_text_fragment_container, yourFragment).commit(); 

YourFragment.java में

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.your_fragment_layout, container, false); 
} 

और your_fragment_layout.xml में किसी विशेष विशेषता के बिना एक सामान्य टेक्स्ट व्यू है।

, आशा है कि

संबंध है यह उपयोगी हो करने के लिए!

+0

क्या ListViewFragment है, है दो framelayouts कि पूर्ण स्क्रीन कवर बनाना होगा और आप गतिविधि

<FrameLayout id="@+id/ListFragment" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> <FrameLayout id="@+id/LoadingFragment" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> 

में मढ़े गए फ्रेम लेआउट

को लोड हो रहा है टुकड़ा आवंटित और फिर यह इस https://github.com/ribot/easy-adapter से है? – ishandutta2007

+0

दूसरी बार मुझे त्रुटि मिलती है 'fragmentManager.beginTransaction() कॉल एपीआई 11 या इससे पहले की आवश्यकता है, तो कृपया संस्करण भी प्रदान करें। – ishandutta2007

+0

हाय! नहीं, ListViewFragment सिर्फ मेरे LisView का नाम है (मेरे पास कोड नहीं है [2014] लेकिन इसका कोई विशेष व्यवहार नहीं है। आवश्यक API स्तर के बारे में, समर्थन लाइब्रेरी का उपयोग करने का प्रयास करें। सादर! –

1

मुझे लगता है कि आप वास्तव में इसे ओवरले करने के बजाय मूल खंड को बदल रहे हैं। आप उन्हें लोड करने के लिए

FragmentTransaction transaction=manager.beginTransaction(); 
transaction.add(R.id.ListFragment, listFragment); 
transaction.commit(); 

FragmentTransaction transaction=manager.beginTransaction(); 
transaction.add(R.id.LoadingFragment, loadingFragment); 
transaction.commit(); 
+1

क्या आप इसे एक फ्रेम का उपयोग करके नहीं कर सकते लेआउट और बस दो अन्य कंटेनर लेआउट को खंड में प्रतिपादित करने के साथ दृश्य में जोड़ें? – jonney

+1

वास्तव में नहीं, फ्रेम लेआउट गतिशील रूप से टुकड़े जोड़ने के लिए सबसे अच्छा है। – Kelly

संबंधित मुद्दे