AndroidTV 용 응용 프로그램을 코딩하는 중에도이 문제가 발생했습니다. nextFocus {direction}가 뷰에 설정된 경우에도 가로 라디오 그룹 포커스는 단순히 dpad에서 작동하지 않는 것 같습니다. 당신이 린백 라이브러리를 사용하는 경우
다행히, 당신은 다음을 수행하여 자신을 집중 관리 할 BrowseFrameLayout.onFocusSearchListener을 사용할 수 있습니다 : 첫째
를, 레이아웃 및 라디오 그룹은 포커스가되지 않도록하거나 설정 focusableIn TouchMode를 참된. 이렇게하면 레이아웃/그룹이 개별 버튼 대신 포커스를받습니다.
선형 레이아웃 대신 BrowseFrameLayout에 라디오 그룹 랩 :
<android.support.v17.leanback.widget.BrowseFrameLayout
android:id="@+id/browse_frame_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioGroup
android:id="@+id/radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/first_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="First Button Text" />
<RadioButton
android:id="@+id/second_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Second Button Text" />
</RadioGroup>
</android.support.v17.leanback.widget.BrowseFrameLayout>
그런 다음 당신의 조각이나 활동 코드에 다음을 추가 : 그것은
BrowseFrameLayout.OnFocusSearchListener onFocusSearchListener =
new BrowseFrameLayout.OnFocusSearchListener() {
@Override
public View onFocusSearch(View focused, int direction) {
if (focused.getId() == R.id.first_button && direction == View.FOCUS_RIGHT) {
return findViewById(R.id.second_button);
} else if (focused.getId() == R.id.second_button && direction == View.FOCUS_LEFT) {
return findViewById(R.id.first_button);
} else if (focused.getId() == R.id.first_button && direction == View.FOCUS_LEFT) {
// return null to allow for default focus transition
return null;
} else {
// return focused to avoid focus change
return focused;
}
}
};
((BrowseFrameLayout) findViewById(R.id.browse_frame_layout)).setOnFocusSearchListener(onFocusSearchListener);
의 그! 샘플 스 니펫의 주석에서 언급했듯이 null을 반환하면 시스템에서 기본 포커스 전환을 처리 할 수 있으며 초점을 맞출 경우 포커스 변경을 차단합니다 (예 : 수평 라디오 그룹의 위/아래 클릭에 유용함). 다른보기를 반환하면 해당보기가 초점을 맞 춥니 다.
이 코드는 어떤 방향 으로든 숫자/유형의보기에 맞게 조정할 수 있으므로 구현하기가 짜증나지만 매우 유용합니다.
이것은 많은 좌절감을 안겨 줬는데, 도움이 되었기를 바랍니다.