2012-11-08 68 views
7

我正在使用加載微調器動畫和一組項目。如果你點擊它外面,它應該消失。有人知道怎麼做這個嗎?在Android中單擊它之外時隱藏加載微調器

Spinner

我已經試過這一點。它與EditText一起工作。但它不工作的提前Spinner

@Override 
public boolean dispatchTouchEvent(MotionEvent event) { 
    View view = getCurrentFocus(); 
    boolean ret = super.dispatchTouchEvent(event); 

    if (view instanceof EditText||view instanceof Spinner) { 
     View w = getCurrentFocus(); 
     int scrcoords[] = new int[2]; 
     w.getLocationOnScreen(scrcoords); 
     float x = event.getRawX() + w.getLeft() - scrcoords[0]; 
     float y = event.getRawY() + w.getTop() - scrcoords[1]; 

     if (event.getAction() == MotionEvent.ACTION_UP 
&& (x < w.getLeft() || x >= w.getRight() 
|| y < w.getTop() || y > w.getBottom())) { 
      InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(getWindow().getCurrentFocus().getWindowToken(), 0); 
     } 
    } 
return ret; 
} 

感謝。

+0

看看http://stackoverflow.com/questions/8384067/how-to-dismiss-the-dialog-with-click-on-outside-of-the-dialog/8384124#8384124 – user370305

+1

我已經檢查過這個鏈接。但是可以進行對話而不是微調。 –

+0

你必須檢查你的活動窗口(Spinner之外)的觸摸。我在那個答案中提到了。 – user370305

回答

0

有一個爲Dialoglink

那麼你爲什麼不嘗試創建一個自定義對話框(simple example),這將看起來像一個旋轉的解決方案?使用單選按鈕爲您的對話框創建佈局文件。

當用戶點擊一個單選按鈕,呼叫dialog.dismiss(),然後進行下一步

+0

感謝您的回答。我已經檢查過您提供的鏈接。 –

+0

重點在於將'Dialog'設置爲'Spinner',而不是鏈接。嘗試使用'對話框',使其類似於'微調' –

1

必要的代碼我本人來說卻是創建一個自定義AlertDialogsetSingleChoiceItems()做同樣的事情。然後我用setCanceledOnTouchOutside()

+0

感謝您的答案。我在之前的應用程序中嘗試過,並獲得成功。但在這裏我的要求是針對微調。不適用於AlertDialog。如果你知道幫助我請 –

+0

你可以通過''Spinner' action'onClick()'並運行'AlertDialog'我看不出有什麼困難。 – shkschneider