ورود

View Full Version : کمک در PopupWindow



shahin bahari
یک شنبه 06 بهمن 1392, 23:50 عصر
سلام
من یه ویجت جدید دارم مینویسم. میخوام تحت یه شرطی یه popup window زیرش باز بشه.مشکل اینجاست که popup window باز نمیشه. یعنی باز میشه ولی معلوم نیست(با isShowing چک کردم)
content که بهش میدم یه FrameLayout هست که توی کد اون رو ساختم. از content مطمئن هستم چون جای دیگه نمایشش میدم درست نشون میده. بک گراند popup window رو هم ست کردم که ترنسپرنت نباشه. برنامه یه همچین قالبی داره:

public class MyWidget extends FrameLayout {

public void init() {
tv=new TextView(context);
addView(tv);
tv.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
PopupWindow popup=new PopupWindow(context);
popup.setFocusable(true);
FrameLayout parent=new FrameLayout(context);
//set parent content
popup.setContentView(parent);
popup.setBackgroundDrawable(new ColorDrawable(0xFFFFFF00));
popup.showAsDropDown(MyWidget.this); //also try "v" , "tv"
popup.update();
}
});
}
}


به نظر خودم anchor رو اشتباه میدم که معلوم نیست کجا میره. با تابع showAtLocation هم امتحان کردم ولی اون رو هم با پرنتش مشکل داشتم!

rubiks.kde
دوشنبه 07 بهمن 1392, 00:11 صبح
برای پرنت از شی parent که ساختید استفاده کنید.

FrameLayout parent=new FrameLayout(context);

shahin bahari
دوشنبه 07 بهمن 1392, 02:01 صبح
این frame layout که خودش محتوای popup window قرار بشه. باز با این حال تست کردم ولی باز جواب نداد!
خیلی جالبه که popup window رو میسازه (از رفتار دکمه بک هم میشه فهمید) ولی معلوم نیست کجا!
از dump view hierarchy هم استفاده کردم ببینیم میگه کجاست. frame layout رو نشون میده که ساخته شده ولی روش کلیک میکنم هیچ جا رو نشون نمیده! خیلی عجیبه!

rubiks.kde
دوشنبه 07 بهمن 1392, 11:28 صبح
این frame layout که خودش محتوای popup window قرار بشه. باز با این حال تست کردم ولی باز جواب نداد!
خیلی جالبه که popup window رو میسازه (از رفتار دکمه بک هم میشه فهمید) ولی معلوم نیست کجا!
از dump view hierarchy هم استفاده کردم ببینیم میگه کجاست. frame layout رو نشون میده که ساخته شده ولی روش کلیک میکنم هیچ جا رو نشون نمیده! خیلی عجیبه!

دقیقا چطوری از تابع showAtLocation استفاده میکنید؟

shahin bahari
دوشنبه 07 بهمن 1392, 14:49 عصر
دقیقا چطوری از تابع showAtLocation استفاده میکنید؟

popup.showAtLocation(Myٌ.Widget.this.getRootView( ), Gravity.LEFT, 10, 10);


showatLocation رو برای تست میخواستم استفاده کنم. showAsDropDown چیزی هست که لازم دارم.چون میخوام دقیقا زیر ویجت خودم باز بشه. مثل dropdown که توی spinner باز میشه.
اول میخواستم کلا کلاس رو از Spinner مشتق کنم و DropDown رو خودم براش بنویسم ولی تو اندروید 8 مد DropDown برای Spinner تعریف نشده و مجبور شدم خودم از اول بسازمش که سر این مورد....