我有兩個紡紗器,我想互相「排擠」在一個相互排斥的意義上:如果您在一箇中選擇一個項目,該項目的文本變成紅色並出現在頂部,而另一個返回顯示初始(「標題」)選擇(如果先前選擇了另一個項目),並且其文本變爲白色。「同步」兩個紡紗器
這是通過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