自定义警报对话框-android.R.id.Custom存在问题
我肯定我没有抓住要点,所以我希望有人能解释一下 我想在用户触摸自定义警报对话框-android.R.id.Custom存在问题,android,Android,我肯定我没有抓住要点,所以我希望有人能解释一下 我想在用户触摸ImageView时创建一个弹出窗口。我看了一下AlertDialog,文档上说 如果要显示更复杂的视图,请查找名为“自定义”的FrameLayout并将视图添加到其中: …使用以下代码 FrameLayout fl = (FrameLayout) findViewById(android.R.id.custom); fl.addView(myView, new LayoutParams(MATCH_PARENT, W
ImageView
时创建一个弹出窗口。我看了一下AlertDialog
,文档上说
如果要显示更复杂的视图,请查找名为“自定义”的FrameLayout并将视图添加到其中:
…使用以下代码
FrameLayout fl = (FrameLayout) findViewById(android.R.id.custom);
fl.addView(myView, new LayoutParams(MATCH_PARENT, WRAP_CONTENT));
因此,作为测试,我在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));
上面我调用的addView
的最后一行抛出了一个NullPointerException
,这让我觉得android.R.id.custom
有问题
因此,问题是,上面的问题是什么,还有没有更好的方法来创建自定义弹出窗口(可能通过使用对话框
类或扩展它)
注意:在本例中,我仅使用
TextView
作为测试,我想为实际弹出窗口添加更复杂的内容。一个选项是创建活动
,并使用对话框主题设置其样式:
<activity android:theme="@android:style/Theme.Dialog">
了解更多信息。我认为您的问题是因为您没有“充气”布局。对于框架布局,您需要使用LayoutInflater
使用以下代码:
LayoutInflater.from(context).inflate(android.R.id.custom, this, true)
这应该适用于FrameLayout。请在网站上阅读更多关于此的信息
也请查看
编辑:我也注意到这里也有一篇关于这个问题的文章:检查Mossila的AlertDialog定制示例。我发现它们比谷歌的例子更有用
我将Mossila的代码直接剪切粘贴到我的项目中,它就成功了:-),然后我做了一些调整以满足我的需要
有趣的想法我来看看。使用startActivityForResult()这似乎是一种更好的方法来完成我需要的任务-谢谢。谢谢-我无法使用AlertDialog按我想要的方式工作,但我现在知道如何正确处理框架布局。您不能膨胀ID。您需要R.layout值才能工作。使用AlertDialog.setView(视图视图)向AlertDialog添加自定义视图。退房