मेरे लिए एक पारदर्शी छवि दृश्य जोड़ने से ब्लैक मास्क को पूरी तरह से हटाने में मदद नहीं मिली। स्क्रॉल करते समय मानचित्र के शीर्ष और निचले भाग अभी भी काले मुखौटा दिखाते हैं।
तो इसके लिए समाधान, मुझे this answer में एक छोटे से बदलाव के साथ मिला। मैं अपने नक्शा टुकड़ा को जोड़ा गया,
android:layout_marginTop="-100dp"
android:layout_marginBottom="-100dp"
के बाद से यह ऊर्ध्वाधर scrollview था।
<RelativeLayout
android:id="@+id/map_layout"
android:layout_width="match_parent"
android:layout_height="300dp">
<fragment
android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="-100dp"
android:layout_marginBottom="-100dp"
android:name="com.google.android.gms.maps.MapFragment"/>
<ImageView
android:id="@+id/transparent_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@color/transparent" />
</RelativeLayout>
सवाल मैं अपने मुख्य scrollview के लिए requestDisallowInterceptTouchEvent(true)
सेट के दूसरे भाग का समाधान करने के लिए: तो मेरी लेआउट अब इस तरह से देखा। जब उपयोगकर्ता ने पारदर्शी छवि को स्पर्श किया और स्थानांतरित किया तो मैंने MotionEvent.ACTION_DOWN
और MotionEvent.ACTION_MOVE
के लिए पारदर्शी छवि पर स्पर्श अक्षम कर दिया ताकि नक्शा खंड टच ईवेंट ले सके।
ScrollView mainScrollView = (ScrollView) findViewById(R.id.main_scrollview);
ImageView transparentImageView = (ImageView) findViewById(R.id.transparent_image);
transparentImageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
// Disallow ScrollView to intercept touch events.
mainScrollView.requestDisallowInterceptTouchEvent(true);
// Disable touch on transparent view
return false;
case MotionEvent.ACTION_UP:
// Allow ScrollView to intercept touch events.
mainScrollView.requestDisallowInterceptTouchEvent(false);
return true;
case MotionEvent.ACTION_MOVE:
mainScrollView.requestDisallowInterceptTouchEvent(true);
return false;
default:
return true;
}
}
});
यह मेरे लिए काम करता है। उम्मीद है कि यह आपकी मदद करता है ..
"मेरे पास स्क्रॉलव्यू में नए मैपफ्रैगमेंट्स में से एक है" - अगर यह अच्छी तरह से काम करता है तो मुझे आश्चर्य होगा। "मानक मैप के बजाय मेरे कस्टमाइज्ड मैप व्यू का उपयोग करने के लिए मैपफ्रैगमेंट कैसे प्राप्त कर सकता हूं?" - आप नहीं कर सकते, AFAIK। आपको अपने 'मानचित्र दृश्य' को होस्ट करने के लिए अपना खुद का टुकड़ा बनाना होगा। – CommonsWare
मुझे भी एक ही समस्या का सामना करना पड़ रहा है, लेकिन मैं एक फ्रैगमेंट के भीतर कच्चे MapView का उपयोग कर रहा हूं। वही समस्या, जब स्क्रॉलव्यू या व्यूपेगर में स्क्रॉल करते हैं तो काला मुखौटा पीछे छोड़ दिया जाता है। –
मेरे नेक्सस एस (एंड्रॉइड 4.1.2) पर, मुझे यह समस्या नहीं मिल रही है। हालांकि, मुझे परीक्षण किए गए सभी एंड्रॉइड 2.2-2.3 डिवाइसों पर बिल्कुल वही समस्या मिल रही है। – Ralf