嗨,大家好我需要从另一个popupWindow里面的按钮启动PopupMenu,问题是当我把这个按钮放在活动的根视图里面时它没有任何错误,但是当我想从另一个popupWindow启动它时给出错误。这是我正在使用的代码:
这是我的PopupWindow:
public void initiateSettingsPopupWindow() {
LayoutInflater settingsInflate = (LayoutInflater) MainActivity.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View settingsLayout = settingsInflate.inflate(R.layout.settings_popup,
(ViewGroup) findViewById(R.id.fullscreen_content_controls));
PopupWindow swindo = new PopupWindow(settingsLayout, LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT, true);
swindo.showAtLocation(settingsLayout, Gravity.BOTTOM,
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
swindo.setAnimationStyle(R.style.PopupWindowAnimation);
LinearLayout settingsLinear = (LinearLayout) settingsLayout
.findViewById(R.id.settingseditback);
settingsLinear.setOnClickListener(this);
}
这是我的PopupMenu代码:
public void showSettingsPopup(View v) {
PopupMenu popup = new PopupMenu(getBaseContext(), v);
popup.setOnMenuItemClickListener(this);
popup.getMenuInflater().inflate(R.menu.main, popup.getMenu());
popup.show();
}
这是我的xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/settingseditback"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<LinearLayout
android:id="@+id/fullscreen_content_controls"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:background="#ededed"
android:orientation="vertical" >
.
.
.
<ImageView
android:id="@+id/IVoptionsMenu"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_gravity="center_horizontal"
android:layout_weight="25"
android:onClick="showSettingsPopup"
android:paddingBottom="6dp"
android:paddingTop="6dp"
android:src="@drawable/ic_actionbar_overflow_dark" >
</ImageView>
</LinearLayout>
</LinearLayout>
有什么问题?这个问题已经被问到here但尚无答案。 我尝试了互联网上提供的所有可能方式,但还没有成功。
请给我一个解决方案,我真的陷入了这个错误。
答案 0 :(得分:1)
最后,我通过一个小技巧找到了解决方案,如果有人需要,我会分享它。我的解决方案并不是那么好但它的工作没有任何视觉差异和问题,所以在某些情况下它可能有所帮助。 我在主xml文件中创建了一个按钮,与PopupWindow中的原始按钮完全相同,在PopupMenu代码中,我用隐藏按钮的引用替换了v,这是我的代码:
public void showSettingsPopup2(View v) {
PopupMenu popup = new PopupMenu(getBaseContext(), findViewById(R.id.IVoptionsMenuInvis));
popup.setOnMenuItemClickListener(this);
popup.getMenuInflater().inflate(R.menu.main, popup.getMenu());
popup.show();
}
答案 1 :(得分:0)
您无法将PopupMenu锚定到PopupWindow中的视图。您需要将其锚定到顶级窗口中的视图。