我有两个纺纱器,我想互相“排挤”在一个相互排斥的意义上:如果您在一个中选择一个项目,该项目的文本变成红色并出现在顶部,而另一个返回显示初始(“标题”)选择(如果先前选择了另一个项目),并且其文本变为白色。“同步”两个纺纱器
这是通过onItemSelected听众全部完成:
sectionSpin.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View arg1,
int position, long arg3) {
issueSpin.setSelection(0);
((TextView) issueSpin.getChildAt(0)).setTextColor(Color.parseColor("#FFFFFF"));
((TextView) arg1).setTextColor(Color.parseColor("#E3170D"));
....
,反之亦然为“的问题微调”。我的问题是,如果我要从一个微调器转到另一个微调器并选择顶层项目,则onItemSelectedListener不会注册,因为所选项目已被选中。
我被告知这是不可能的。或者,我被告知,onItemSelected侦听器不可能触发已经选择的项目。虽然我意识到这在技术上是正确的,但这个问题似乎相对简单,我相信必须有一个解决方法来产生所需的效果。
我有一些相关的几个问题,我正在琢磨:
- 有什么办法来设置在旋转为未选中的所有项目,同时还显示其中之一吗?
- 我可以利用不同类型的事件(即'setOnTouchListener','setOnClickListener'等),大概在最上面的项目上,连同
onItemSelectedListener
? - 我是否应该使用不同类型的事件本身,也许在微调器本身膨胀的视图中,没有
onItemSelectedListener
? - 你能帮我找到一个比上面提到的要点更好的策略吗?
但是这个应用程序的整体设计至关重要,菜单像一个微调器一样打开 - 即选项下降。 – drewmoore
@drewmore我给出了一个解决问题中所描述的问题的答案。我首先考虑对Spinner进行子分类并覆盖负责的方法(如果选择的项目相同,则明确表示“onItemSelectedListener”未被调用),但这是不可能的,因为该方法是私有的。如果您需要使用其他方法严重影响动画,则可以模拟动画。但是,如果我的回答由于某些未在问题原因中披露而无法帮助您,那么您应该编辑您的问题。 – Shade