我的应用中有一个PopupWindow。 这就是我初始化它的方式:
string timesx2 = hr2[0]+":" + hr2[1]; // 19:22
string s2 = DateTime.ParseExact(timesx2, "HHmm", CultureInfo.CurrentCulture)
.ToString("hh:mm tt"); // output in localhost is: 7.22 PM
这就是我试图展示它的方式:
final FrameLayout frameLayout = new FrameLayout(context);
frameLayout.setLayoutParams(new FrameLayout.LayoutParams(200, 200));
hashTagsWindow = new PopupWindow(frameLayout, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
hashTagsWindow.setBackgroundDrawable(new ColorDrawable(Color.BLACK));
但是我的PopupWindow并没有显示出来。
我已经尝试解决问题了吗?:
将 hashTagsWindow.showAsDropDown(binding.hash, 20, 20);
包裹到.showAsDropDown(...)
和.post(Runnable)
应该显示PopupWindow的所有方法。
.runOnUiThread(Runnable)
方法。
所有这些对我没有帮助。
同时,PopupMenu类正确显示在相同的上下文中。但我需要PopupWindow。
我该怎么做才能展示PopupWindow?
答案 0 :(得分:0)
按照这种方法,可以帮助你。
private void showPopupWindow(View view){
LayoutInflater mLayoutInflater=LayoutInflater.from(this);
View mView=mLayoutInflater.inflate(R.layout.pop_up_layout, null);
mPopupWindow = new PopupWindow(mView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
// mPopupWindow=new PopupWindow(mView,,LayoutParams.WRAP_CONTENT);
mPopupWindow.setContentView(mView);
Button mBtnCancel=(Button) mView.findViewById(R.id.btn_cancel);
mBtnCancel.setOnClickListener(this);
mPopupWindow.showAsDropDown(view, 0, 0, Gravity.LEFT);
mPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
Drawable d = new ColorDrawable(Color.WHITE);
getWindow().setBackgroundDrawable(d);
}
});
}