Ich habe es schwer zu verstehen descendantFocusability
. Ganz besonders afterDescendants
.Kann jemand DescendantFocusability = afterDescendants erklären?
Kann mir jemand ein Beispiel zeigen, wann das nützlich wäre?
Ich habe es schwer zu verstehen descendantFocusability
. Ganz besonders afterDescendants
.Kann jemand DescendantFocusability = afterDescendants erklären?
Kann mir jemand ein Beispiel zeigen, wann das nützlich wäre?
Definiert die Beziehung zwischen dem ViewGroup
und seinen Nachkommen bei der Suche nach einem View
Fokus.
Muss einer der folgenden konstanten Werte sein.
+------------------------------------------------------------------------------------------+ | 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. | +------------------------------------------------------------------------------------------+
Sie können das vollständige Beispiel here überprüfen.
Das Snippet ist:
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();
}
}
}
Gemäß der oben Snippet wird afterDescendants
verwendet, um zu verhindern listview
Fokus bekommen, so dass entweder EditText
oder Button
Fokus anfordern können.