2017-04-09 27 views
1

因此,我在android上有一個活動,在操作欄上有一個附加按鈕。如何在android中設置一個onClickListener除了屏幕上的元素

當我點擊按鈕時,會出現兩個浮動動作按鈕(一個用於圖像,一個用於相機)。當我再次點擊按鈕時,它們消失。

現在,我想這樣做,如果用戶點擊屏幕上不是這兩個FAB之一的任何地方,它們將消失。我已經有了使他們消失的行動/命令;不過,我正在尋找如何爲整個屏幕設置一個onClickListener,除了兩個FAB所覆蓋的區域之外。

+2

沒有通用的 「任何地方,但那裏」 發現這樣的監聽器。將「OnClickListener」添加到頂級容器中,因爲如果孩子不使用它們,觸摸事件會傳遞給父母。 – CommonsWare

回答

0

我解決了相同的情況下,您可以在我的情況比較,能申請上你:

我的情況:隱藏在屏幕上的觸摸的任何地方接受的EditText鍵盤。

解決方案:爲非文本框視圖設置觸摸偵聽器以隱藏鍵盤。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_activity); 

    setupUI(findViewById(R.id.scrolview)); // === scrolview is container of all views inside it === 

}

public void setupUI(View view) { 
    //Set up touch listener for non-text box views to hide keyboard. 
    if(!(view instanceof EditText)) { 
     view.setOnTouchListener(new View.OnTouchListener() { 

      public boolean onTouch(View v, MotionEvent event) { 
       hideSoftKeyboard(SignupActivity.this); 

       findViewById(R.id.first_linear_layout).requestFocus(); 

       return false; 
      } 

     }); 
    } 
    //If a layout container, iterate over children and seed recursion. 
    if (view instanceof ViewGroup) { 

     for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) { 

      View innerView = ((ViewGroup) view).getChildAt(i); 

      setupUI(innerView); 
     } 
    } 
} 
public static void hideSoftKeyboard(Activity activity) { 
    InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); 
    inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); 
} 
相關問題