Can someone explain descendantFocusability = afterDescendants?

I'm having hard time understanding descendantFocusability. Very particulary afterDescendants.

Could someone show me an example of when this would be useful?

1 Answer

Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.

Must be one of the following constant values.

+------------------------------------------------------------------------------------------+
| Constant Value Description |
+------------------------------------------------------------------------------------------+
| afterDescendants 1 The ViewGroup will get focus only if |
| none of its descendants want it. |
+------------------------------------------------------------------------------------------+
| beforeDescendants 0 The ViewGroup will get focus before |
| any of its descendants. |
+------------------------------------------------------------------------------------------+
| blocksDescendants 2 The ViewGroup will block its descendants from |
| receiving focus. |
+------------------------------------------------------------------------------------------+

You can check the complete example here.

The snippet is :

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { ListView listView = getListView(); Log.d(TAG, "onItemSelected gave us " + view.toString()); Button b = (Button) view.findViewById(R.id.button); EditText et = (EditText) view.findViewById(R.id.editor); if (b != null || et != null) { // Use afterDescendants to keep ListView from getting focus listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); if(et!=null) et.requestFocus(); else if(b!=null) b.requestFocus(); } else { if (!listView.isFocused()) { // Use beforeDescendants so that previous selections don't re-take focus listView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS); listView.requestFocus(); } }
}

As per the above snippet, afterDescendants is used to prevent listview from getting focus, so that either EditText or Button can request focus.

Note: The link provided above is broken. Please refer to my Gist for the code

2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like