2017-11-29 22 views
0

Leanback 라이브러리의 세부 정보 화면에서 을 사용자 지정 화면으로 구현하고 싶습니다. 행은 아래의 행이됩니다. 이미 HorizontalGridView을 구현했으며 항목을 표시하도록 관리했습니다.Android TV에서 맞춤형 Leanbacks VerticalGridView를 작성하는 방법은 무엇입니까?

Sample Image

내 레이아웃 :

<android.support.v17.leanback.widget.HorizontalGridView 
android:id="@+id/detail_related" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"/> 

내 자바 :

RecyclerView.Adapter mAdapter = new SimilarAssetsAdapter(); 
mBinding.detailRelated.setAdapter(mAdapter); 

I가 발생하고 문제는 내가 어떤 항목에 초점을 맞출 수 없다는 것입니다하지만, 초점은에 전체 HorizontalGridView. 어떻게 해결할 수 있습니까? 보기 사용자 정의 한 경우

답변

0

이 문제를 해결하려면 HorizontalGridView 대신 VerticalGridView을 사용하십시오.

<android.support.v17.leanback.widget.VerticalGridView 
    android:id="@+id/detail_related" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

VerticalGridViewArrayObjectAdapter을 설정 ItemBridgeAdapter를 사용합니다.

ItemBridgeAdapter adapter = new ItemBridgeAdapter(); 
adapter.setAdapter(mRowsAdapter); 
adapter.setPresenter(new SinglePresenterSelector(new ListRowPresenter())); 
mBinding.detailRelated.setAdapter(adapter); 
0

, 당신이 얻을 수 있도록 사용자 정의보기에 다음을 추가해야합니다 초점 :

setFocusable(true); 
setFocusableInTouchMode(true); 
+0

그랬습니까. 일하지 않았어. – khateeb

0

사용자 정의보기에 문제는 당신이 자바에 포커스 변경 리스너를 추가 할 필요가있다 어댑터 내부의 포커스 수신기를 어댑터 항목의 루트보기에 추가하십시오.

어댑터 항목의 생성시 rootview에 포커스를 추가하십시오.

yourView.setFocusable(true);  
yourView.setFocusableInTouchMode(true); 

그런 다음 onBind에서 focuschangeListener를 추가하십시오. 나는 안드로이드 TV 응용 프로그램에 대해 잘 모르는

yourRootView.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 

     if(hasFocus){ 
      //focus gained 
     }else { 
      //focus lost 
     } 
    } 
}); 
0

, 난 당신이 ListRows을 제시하는 것을 처리 할 방법을 찾고 밖으로 아무 말도 못할,하지만 난 당신이 following link에서 해결책을 찾을 수있다 생각합니다.