0

我正在嘗試創建此對話框:設置基於微調值的EditText可見性

dialog

當Spinner設置爲自定義值時,TextEdit應該會自動出現。我打電話View.setVisible()TextView,但可見性是不立即評估,但等待另一個變化 - 例如,添加另一行或設置日期。

的代碼:

 ... 
     customText = (EditText) v.findViewById(R.id.edit_custom_text); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     s.setAdapter(adapter); 

     s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
       SpinnerItem si = (SpinnerItem) adapterView.getItemAtPosition(i); 
       evt.type = si.eventType; 
       if (evt.type == EventType.CUSTOM) { 
        customText.setVisibility(View.VISIBLE); 
       } else { 
        customText.setVisibility(View.GONE); 
       } 
      } 


      @Override 
      public void onNothingSelected(AdapterView<?> adapterView) { 
       //do nothing 
      } 
     }); 

我試圖View.invalidate()(上父視圖)和View.refreshDrawableState()沒有運氣:/

編輯:在達到上述代碼(由調試器驗證)和我還試圖View.INVISIBLE 。該視圖只是不能立即刷新,而只是在另一次視圖更改之後才刷新。

+0

什麼是s?它是微調 – Trikaldarshi

+0

是的,它的微調 – krtek

+0

如果它的微調你想顯示/隱藏edittext然後請按照我的回答 – Trikaldarshi

回答

0

這應該工作,可能是你的佈局不知何故不允許/認識到這種變化?

嘗試將其更改爲INVISIBLE而不是GONE,其中包括(重要的!)在您的佈局xml文件中。

如果這樣的作品由於某種原因,嘗試這樣的事情:

customText.getParent().requestLayout(); //possibly the parent of that etc 
+0

我試過,但沒有運氣。你認爲上面的代碼應該起作用嗎,問題可能在其他地方? 有趣的是,其他更改(如更改按鈕標籤)的作品... – krtek

+0

從您顯示的代碼應該確實工作。唯一我能想到的就是'如果'聲明,你確定你到達了它?比較工作,可以在調試器等中看到它?沒有例外發生? –

+0

是的,聲明已達成,'setVisible()'被稱爲等。謝謝你確保我正確的方式 - 我將嘗試重寫活動... – krtek

-1

驗證你實際上到達您的代碼塊。

customText.setVisibility(View.GONE); 
0

例如,參見本

s.setOnItemSelectedListener(new OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parentView,View selectedItemView, int position, long id) { 
    if ("YES".equals(s.getSelectedItem().toString().toUpperCase())) { 
    youredittxt.setVisibility(View.VISIBLE); 

    } else if ("NO".equals(s.getSelectedItem().toString().toUpperCase())) { 
youredittxt.setVisibility(View.INVISIBLE); 
}} 
    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 
    } 
    }); 
0

作爲後續行動的問題,你在主UI線程?因爲Android有一些內置的功能和策略,所以只有擁有的線程才能更改UI。 如果你是在不同的線程,請嘗試:

customText.getHandler().post(new Runnable() { 
    public void run() { 
     customText.setVisibility(View.VISIBLE); 
    } 
}); 

希望這有助於! :)

+0

在問題中給出的示例代碼中,它至少位於「OnItemSelectedListener」中。 –

相關問題