gpt4 book ai didi

android - PopupWindow 上的 View 可以显示 PopupMenu 吗?

转载 作者:太空狗 更新时间:2023-10-29 14:22:59 25 4
gpt4 key购买 nike

在 Android API11+ 中,我在 PopupWindow 中显示一个按钮。我想在单击按钮时显示 PopupMenu,而不关闭 PopupWindow。这可能吗?我正在实例化和初始化 PopupMenu,但是当我调用 popupMenu.show()我收到此错误(LogCat + 部分调用堆栈):

02-25 13:31:38.281: W/WindowManager(528): 尝试添加带有子窗口 token 的窗口:android.os.BinderProxy@41316cc8。中止。02-25 13:31:51.257: D/AndroidRuntime (7643): 关闭虚拟机02-25 13:31:51.257: W/dalvikvm(7643): threadid=1: 线程以未捕获的异常退出 (group=0x40a711f8)02-25 13:31:51.320: E/AndroidRuntime(7643): 致命异常: main02-25 13:31:51.320: E/AndroidRuntime(7643): android.view.WindowManager$BadTokenException: 无法添加窗口—— token android.view.ViewRootImpl$W@419c3458 无效;你的 Activity 在运行吗?[堆栈的其余部分]

这是因为 PopupMenu 使用了另一个 PopupWindow,而 PopupWindow 似乎不允许使用 PopupWindow 吗?当我将它连接到 Activity 内容 View 中的按钮时,相同的代码运行正常。

提前致谢

最佳答案

您不能从 PopupWindow View 锚定 PopupMenu 您可以做的是从行 View 或顶层 View 内的 View 定义或锚定这里是一个示例:

主.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >


<ImageView
android:id="@+id/IVoptionsMenuInvis"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_gravity="center_horizontal"
android:layout_weight="25"
android:paddingBottom="6dp"
android:paddingTop="6dp">

</FrameLayout>

弹出窗口.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" >

<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="showSettingsPopup2"
android:paddingBottom="6dp"
android:paddingTop="6dp"
android:src="@drawable/ic_actionbar_overflow_dark" />

</LinearLayout>

最后是您的 MainActivity.java:

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.main);
}
.
.
.
public void showSettingsPopup2(View v) {
PopupMenu popup = new PopupMenu(MainActivity.this, findViewById(R.id.IVoptionsMenuInvis));
popup.setOnMenuItemClickListener(this);
popup.getMenuInflater().inflate(R.menu.main, popup.getMenu());
popup.show();
}
}

关于android - PopupWindow 上的 View 可以显示 PopupMenu 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15067184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com