वहां मौजूद अधिकांश उदाहरण पॉपअप विंडो की चौड़ाई और ऊंचाई निर्दिष्ट करते हैं। मैं उन्हें WRAP_CONTENT होना चाहते हैं - तो निर्माता में मैं दोनों चौड़ाई और ऊंचाई के लिए -2 सेट के बाद से सामग्री dinamically निर्धारित किया जाता है, और showAsDropDown (देखें लंगर)आकार के बिना पॉपअपविंडो स्क्रीन से बाहर
ऐसा करने के माध्यम से यह दिखाने के लिए, पॉपअप हमेशा तैयार की है एंकर दृश्य के नीचे, जिसका अर्थ है कि इसे ऑफस्क्रीन खींचा जा सकता है। निम्नलिखित स्निपेट समस्या का प्रदर्शन करता है। अंतिम टेक्स्ट व्यू पर क्लिक करने का प्रयास करें और आपको कोई पॉपअपविंडो दिखाई नहीं देगा, क्योंकि यह विंडोज़ सीमाओं के बाहर दिखाया गया है। यह क्यों काम नहीं करता है? मैंने टिप्पणी की है कि स्पष्ट रूप से आयाम निर्दिष्ट करना (उदाहरण के लिए 200, 100) समस्या को ट्रिगर नहीं करता है। यह अपने आप का प्रयास करें
package com.zybnet.example.popupdemo;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
public class PopupDemoActivity extends Activity implements OnClickListener {
private PopupWindow popup;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// -2 means WRAP_CONTENT THIS TRIGGERS THE PROBLEM
popup = new PopupWindow(getPopupContent(), -2, -2);
// When you specify the dimensions everything goes fine
//popup = new PopupWindow(getPopupContent(), 200, 100);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
// FILL_PARENT and same layout weight for all children
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(-1, -1, 1);
for (int i = 0; i < 10; i++) {
TextView tv = new TextView(this);
tv.setText("Click to show popup");
tv.setOnClickListener(this);
layout.addView(tv, params);
}
setContentView(layout);
}
@Override
public void onClick(View view) {
popup.dismiss();
popup.showAsDropDown(view);
}
private View getPopupContent() {
TextView popupContent = new TextView(this);
popupContent.setText("Some text here");
popupContent.setTextColor(Color.parseColor("#5000ae"));
popupContent.setBackgroundColor(Color.parseColor("#ff00ff"));
popupContent.setPadding(10, 20, 20, 10);
return popupContent;
}
}
मैं स्रोतों भी पढ़ा है, और इसे और अधिक एक ए लगता है एंड्रॉइड बग, क्योंकि आकार सही है, लेकिन प्लेसमेंट गलत है। मैंने डेमो प्रदान करने के बाद से इसे स्वयं परीक्षण कर सकते हैं। अब मैं PopupWindow.showAtLocation() – Raffaele
के साथ प्रयोग कर रहा हूं, जैसा कि मुझे संदेह है कि आपको 'setWindowLayoutMode' में जोड़ने की आवश्यकता है, मैंने अपना जवाब संपादित किया और आपको आवश्यक सटीक कार्य कोड में जोड़ा गया। मैंने इसे अपने एंड्रॉइड डिवाइस और सब कुछ पर परीक्षण किया! :) – Bob
अगली बार जब आप पॉपअप का आह्वान करते हैं तो सामग्री दृश्य में परिवर्तन होता है तो क्या होता है? यही कारण है कि मुझे WRAP_CONTENT – Raffaele