Android:减小微调器下拉框的宽度

Posted

技术标签:

【中文标题】Android:减小微调器下拉框的宽度【英文标题】:Android: Reduce the width of a spinner's drop-down box 【发布时间】:2011-12-03 22:13:42 【问题描述】:

我已经查看了有关此主题的大多数问题,但似乎没有明确的答案。我在表格视图的不同行中有三个微调器。使用 weight 属性,表格中的单元格以及随之而来的微调器和文本视图都具有相同的宽度。

但是,当单击微调器时,下拉列表会以全宽显示并覆盖整个表格。必须有一种方法来限制列表的宽度。毕竟它只能保存一个最多 4 位的数字。

我在 R.attr.dropDownWidth 上看到了一个注释,看起来它可能会有所帮助,但我不知道如何实现这个方法,更不用说它是否真的有效。

任何有关此方法或其他方法的任何帮助,将下拉菜单的宽度限制在大约 100 度,我们将不胜感激 - 特别是如果包含示例代码。

谢谢,

艾伦...

【问题讨论】:

【参考方案1】:

但是,当单击微调器时,下拉列表会以全宽显示并覆盖整个表格。

那是因为它确实是一个弹出对话框。

一定有办法限制列表的宽度。

这很困难,因为您不是创建对话框的人。考虑到Spinner 的编写方式,我什至看不到如何通过使用自己的子类扩展 Spinner 来实现这一点。您可能必须克隆 Spinner 源代码,将其移动到另一个包(或类名),然后使用 How to control the width and height of the default Alert Dialog in android? 中概述的技术更改 performClick() 以更改 AlertDialog 的大小。

而且,请记住 Spinner 在 Honeycomb 上的行为明显不同,它在 Ice Cream Sandwich 上的表现还有待观察。我们没有 Honeycomb 源代码,所以我的克隆类解决方案会在较新的设备上给您带来问题。

我在 R.attr.dropDownWidth 上看到了一个注释,看起来它可能会有所帮助,但我不知道如何实现这个方法,更不用说它是否真的有效。

它不是一种方法,而是一种可以在样式中设置的属性。但是,根据源代码,这似乎只用于AutoCompleteTextView的下拉菜单。

【讨论】:

您好 CommonsWare,是的,我得出了相同的结论,并且将保持原样。正如你所说,这种情况在以后的版本中可能会有所不同,但至少现在我需要保持向后兼容。不管怎么说,还是要谢谢你。艾伦... 上传到不同的设备后,我注意到微调器和列表的元素很难选择。我已将 xml 行中的 textview 设置为“wrap-content”,这意味着,如果电视中只有 1 或 2 个字符,您必须实际点击其中一个字符才能选择该行。通过更改为“fill_parent”,电视会延伸到整个行并使选择更容易。我认为这可能对其他人有所帮助。最良好的祝愿,艾伦...

以上是关于Android:减小微调器下拉框的宽度的主要内容,如果未能解决你的问题,请参考以下文章

动态改变ComboBox下拉框的宽度

将微调器宽度设置为当前项目宽度

wpf combox 在哪里设置下拉框的宽度和高度

QCombobox设置下拉框的宽度

Android微调器下拉图标不显示

Android微调器下拉菜单背景颜色更改