我想做的事情:
- 显示一个文本框作为输入字段,它将接受城市名称(世界上任何城市)
- 当用户开始输入时,我会自动(完成/建议)城市名称。
- 当用户从下拉列表中选择一个城市名称时,该名称也会出现在文本框中,并且背景会突出显示为非常浅的蓝色。
是否有任何现有的小部件可以执行此操作?如果没有,自动(完成/建议)城市名称的好方法是什么?
编辑:我知道 AutoCompleteTextView 会自动完成。问题更多是关于处理详尽的城市数据源(希望可以在某个地方作为在线 API 提供),并将小部件与该数据源列表连接起来。
最佳答案
正如您自己指出的那样,使用 Android SDK 中的标准组件可以相当轻松地构建所描述的小部件,主要组件是 AutoCompleteTextView
。在“从哪里获取城市数据”方面,您基本上有两种选择:
- 将数据与应用 bundle 在一起。
- 使用网络服务。
两者显然各有利弊。 bundle 数据会大大增加您的 APK 大小,而网络服务通常会受到礼貌限制。无论哪个选项是“最佳”,都取决于多个因素,包括您应用的用户群规模。
一些用于 bundle 数据的具体资源:
- MaxMind's Free World Cities Database (33MB)
- GeoNames (233MB!)
和网络服务:
- GeoNames (cc-by licence,30k 请求/天,2k 请求/小时)。
- Google Places API - Autocomplete (每天 1k 个请求,如果您通过 Google 验证您的身份,或者试试您的运气和 request a higher courtesy quota,则每天 100k 个请求)
请注意,这些列表绝不是详尽无遗的 - 我相信还有很多其他选择。不过,他们应该为您提供一个不错的起点。
关于android - 位置选择器选择器输入小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19485101/