2015-11-07 4 views
1

На экране есть ImageView с фокусом. Когда новый вид отображается с помощью coolNavbarView.setVisiblity(View.GONE), новый вид захватывает фокус. Новое представление должно быть способным стать настраиваемым, если пользователь перейдет к нему, но он не должен красть фокус, как только он будет показан. Фокус должен оставаться с ImageView, который уже имеет фокус.Просмотр ворует доступность фокуса, когда становится видимым

Я знаю, есть метод setFocusable(boolean), чтобы позволить стать настраиваемым, есть ли способ setStealFocusOnVisible(boolean)?

Вот как стековый след, как он фокусируется.

com.mycompany.navbar.view.CoolThumbnailsView$1.onFocusChange(CoolThumbnailsView.java:94) 
android.view.View.onFocusChanged(View.java:5462) 
android.widget.AbsListView.onFocusChanged(AbsListView.java:2063) 
android.widget.ListView.onFocusChanged(ListView.java:3587) 
android.view.View.handleFocusGainInternal(View.java:5218) 
android.view.ViewGroup.handleFocusGainInternal(ViewGroup.java:651) 
android.view.View.requestFocusNoSearch(View.java:7937) 
android.view.View.requestFocus(View.java:7916) 
android.view.ViewGroup.requestFocus(ViewGroup.java:2612) 
android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2657) 
android.view.ViewGroup.requestFocus(ViewGroup.java:2613) 
android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2657) 
android.view.ViewGroup.requestFocus(ViewGroup.java:2613) 
android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2657) 
android.view.ViewGroup.requestFocus(ViewGroup.java:2613) 
android.view.View.requestFocus(View.java:7883) 
android.view.View.requestFocus(View.java:7862) 
android.view.ViewRootImpl.focusableViewAvailable(ViewRootImpl.java:2982) 
android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:698) 
android.view.View.setFlags(View.java:10008) 
android.view.View.setVisibility(View.java:6951) 
com.mycompany.navbar.view.CoolNavbarView.show(CoolNavbarView.java:99) 
com.mycompany.navbar.controller.CoolNavbarViewController.show(CoolNavbarViewController.java:292) 

ответ

1

Для моего случая ListView воровал фокус. Я смог исправить это, удалив атрибут Focusable из списка List перед тем, как сделать ListView видимым

ListView v = ViewUtils.findViewById(view, listLayoutId, ListView.class); 
v.setFocusable(false); 
Смежные вопросы