2014-07-15 51 views
0

在我的android應用程序 我需要檢查一個特定的視圖是否被聚焦。 現在我在Activity類 中找到了getCurrentFocus()函數,但是這返回了一個View對象。如何檢查一個特定的視圖目前是否集中在Android

如何比較和檢查此返回的視圖是否與所討論的視圖相同。 我的意思是這裏沒有getName()函數。 所以在獲得View對象之後,我該如何比較以檢查哪個View類是這個?

+0

你可以用'hasFocus()'的視圖。您只需使用此方法檢查每個可聚焦視圖。 –

回答

2

View.isFocused()方法告訴所討論的視圖是否有重點。

if (myView.isFocused()) { 
    // your code 
} 

如果你仍然想使用getCurrentFocus()方法,你可以簡單地檢查:

View focusView = getCurrentFocus(); 
if (myView == focusView) { 
    // your code 
} 

否則,您可以通過ID比較你的意見。

View focusView = getCurrentFocus(); 
if (focusView != null && myView.getId() == focusView.getId()) { 
    // your code 
} 
+0

工程,但我得到的方法調用getId可能會產生java NullpointerException – CGR

+0

@CGR嗯,isFocused()是這裏的首選方式。 getCurrentFocus()可以返回一個空視圖,所以如果你決定使用getId(),你應該先做一個空檢查。 –

+0

更新回答做空檢查。謝謝@CGR。 –

0

我可以使用getId()方法嗎?

例如

getCurrentFocus() == R.id.myView; 
0

無需的getName()。只需使用==運算符即可。請參閱:

View myView = findViewById(...); 

if (activitygetCurrentFocus() == myView) 
    // ha focus 

} 

另一種選擇,一個我通常喜歡,就是設置一個焦點監聽你有興趣在監督意見:

myView.setOnFocusChangeListener(new OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
      if (hasFocus) { 
       // got focus logic 
      } 
    } 
}); 
相關問題