Android 应用程序中的独立搜索栏?
我想为 Android 应用程序创建一个搜索栏,允许用户选择 -5 到 5 之间的值(映射到“强烈不同意”和“强烈同意”)。如何制作具有离散值的搜索栏?或者我可以使用更好的 UI 小部件吗?
谢谢。
I would like to create a seekbar for an Android app that allows the user to select a value between -5 and 5 (which maps to "strongly disagree" and "strongly agree"). How do I make a seekbar with discrete values? or is there a better UI widget I could use for this?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
Seekbar 对于离散值非常有用。我们使用 Seekbar 来处理离散数据,如下所示。为了显示哪个项目被选中,我们只需更改所选文本视图的字体,使其更大。您还可以通过更改背景颜色或其他方式来突出显示。它运作得很好。您需要在搜索栏上调用 setMax(11),然后在代码中需要在范围(0 到 11)和(-5 到 5)之间进行适当的转换。
The Seekbar works great for discrete values. We use a Seekbar for discrete data as shown below. To show which item is selected, we just change the font of the selected text view so it is bigger. You could also highlight by changing the background color or something. It works pretty well. You will want to call setMax(11) on the seek bar, and then in your code you need to translate between the range (0 through 11) and (-5 through 5) appropriately.
如果您想在不使用第三方库的情况下实现具有多个间隙的离散搜索栏,请使用搜索栏的样式属性。
If you want to implement discrete seekbar with number of gaps without using third party library then use style property of seekbar.
我不知道这里有什么问题,您添加了一个范围为 0-10 的搜索栏。然后,如果从所选值中减去 -5,则可以将这些值映射到 -5。
编辑
将
android:max="10"
添加到xml定义中,您将获得固定大小的搜索栏。您也许应该考虑添加一个文本视图来表示当前所选值的文本表示形式,例如:强烈不同意。
要更新此视图,请订阅
onProgressChanged
事件,progress
参数将为您提供所选的数字。I don't know what is the issue here, you add a seekbar having a range of 0-10. Then you can map these values to -5 if you substract -5 from the selected value.
EDIT
add
android:max="10"
to the xml definiton and you get a fixed size seekbar.You maybe should consider to add a textview to denote the current selected value's textual representation such as: Strongly Disagree.
To update this view, subscribe to
onProgressChanged
event andprogress
parameter will give you the chosen number.只需使用材质组件库,例如:
Just use the material components library with something like:
我希望这段代码一定能对您有所帮助。
试试这个...
I hope this code surely helpes you.
Try this...
第一步:将 maxVal 设置为 10;
第二步:
1-st step : set maxVal to 10;
2-nd step :