在我的android應用程序 我需要檢查一個特定的視圖是否被聚焦。 現在我在Activity類 中找到了getCurrentFocus()函數,但是這返回了一個View對象。如何檢查一個特定的視圖目前是否集中在Android
如何比較和檢查此返回的視圖是否與所討論的視圖相同。 我的意思是這裏沒有getName()函數。 所以在獲得View對象之後,我該如何比較以檢查哪個View類是這個?
在我的android應用程序 我需要檢查一個特定的視圖是否被聚焦。 現在我在Activity類 中找到了getCurrentFocus()函數,但是這返回了一個View對象。如何檢查一個特定的視圖目前是否集中在Android
如何比較和檢查此返回的視圖是否與所討論的視圖相同。 我的意思是這裏沒有getName()函數。 所以在獲得View對象之後,我該如何比較以檢查哪個View類是這個?
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
}
工程,但我得到的方法調用getId可能會產生java NullpointerException – CGR
@CGR嗯,isFocused()是這裏的首選方式。 getCurrentFocus()可以返回一個空視圖,所以如果你決定使用getId(),你應該先做一個空檢查。 –
更新回答做空檢查。謝謝@CGR。 –
我可以使用getId()方法嗎?
例如
getCurrentFocus() == R.id.myView;
無需的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
}
}
});
你可以用'hasFocus()'的視圖。您只需使用此方法檢查每個可聚焦視圖。 –