如何动态更改 AlertDialog 的布局和字段

Posted

技术标签:

【中文标题】如何动态更改 AlertDialog 的布局和字段【英文标题】:How to Change Layout and Field of AlertDialog Dynamically 【发布时间】:2012-03-31 21:45:59 【问题描述】:

我在 AlertDialog 中有一个 Spinner。 乍一看,他们将只在微调器上,其中有三个选项:

    添加文本区域, 添加编辑文本, 添加单选按钮。

当用户在 sipnner 中选择任何一个选项时,AlerDialog 应该在 Spinner 下的 AlertDialog 中显示 Text Area/Edit Text/Radio。

任何帮助/链接

谢谢

【问题讨论】:

【参考方案1】:

使用微调器和文本、编辑文本和单选按钮创建 XML 布局视图。您将文本的可见性、编辑文本和单选按钮设置为 GONE。

我认为最简单的方法是扩展 AlertDialog 对象。在对象中,您可以使用

设置 AlertDialog 的视图
this.setContentView(R.layout.yourLayout);

现在您可以使用

获取对元素的引用
(EditText) editText = (EditText) this.findViewById(R.id.editTextIdOnLayout);

为您的微调器添加一个侦听器,然后根据您选择的选项,您现在可以使用您的元素句柄来更改您想要显示的内容的可见性。

【讨论】:

嗨,我已经尝试并且大部分都完成了,但是微调器的 onClick 不起作用,当微调器选择更改时,我如何刷新 alertDialog。 我确定微调器视图已被微调器对象刷新。您应该在 alertdialog 对象的构造函数或保证运行的方法中添加微调器事件。那时你应该像平常一样处理微调器。 我不熟悉微调器,因为我不怎么使用它们,但我认为您想使用 onItemselectedListener()。看看这个***.com/questions/1337424/… 选择一个项目后,您可以更改元素的可见性。 阿汉,太好了,谢谢 jjNford.. :)【参考方案2】:

创建你想要的布局并设置它alertDialog.setContenView(R.layout.alertdialg);

【讨论】:

【参考方案3】:

您可以使用 Text、Radio 等进行布局。为它们设置属性 Visibility = GONE。从微调器中选择一个值后,设置必填字段属性 Visibility = VISIBLE。

【讨论】:

以上是关于如何动态更改 AlertDialog 的布局和字段的主要内容,如果未能解决你的问题,请参考以下文章

使用Alertdialog更改后面的文本视图

Android AlertDialog 在每个请求上动态更改文本

Android:如何设置AlertDialog的宽度和高度,以及AlertDialog风格的按钮?

无法从 alertDialog 中的两个 editText 字段更新我的字符串和双参数 - android studio

AlertDialog 样式 - 如何更改标题、消息等的样式(颜色)

如何在Click上修复错误的alertDialog?