自定义 AlertDialog - android.R.id.custom 的问题

Squ*_*onk 5 android

我确定我在这里错过了重点,所以我希望有人能解释一下。

我想在用户触摸ImageView. 我看了看,AlertDialog文档说......

如果要显示更复杂的视图,请查找名为“custom”的 FrameLayout 并将您的视图添加到其中:

...使用以下代码...

    FrameLayout fl = (FrameLayout) findViewById(android.R.id.custom);
    fl.addView(myView, new LayoutParams(MATCH_PARENT, WRAP_CONTENT));
Run Code Online (Sandbox Code Playgroud)

因此,作为测试,我在 onCLick() 方法中尝试了以下操作...

    TextView tv = new TextView(this);
    tv.setText("Hello World");
    FrameLayout customFrameLayout = (FrameLayout) findViewById(android.R.id.custom);
    customFrameLayout.addView(tv, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
Run Code Online (Sandbox Code Playgroud)

上面我调用的最后一行addView抛出 aNullPointerException这让我认为android.R.id.custom.

所以问题是,上面有什么问题,还有没有更好的方法来创建自定义弹出窗口(也许通过使用Dialog类或扩展它)?

注意:我仅TextView在此示例中用作测试,我想为实际弹出窗口添加更复杂的内容。

Che*_*mon 1

一种选择是创建一个对话框Activity并使用对话框主题设置其样式:

<activity android:theme="@android:style/Theme.Dialog">
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅应用主题。