2017-11-29 19 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"/> 

私のJava:

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

私が遭遇しています問題は、私は項目のいずれかに焦点を当てることができないということですが、焦点は上にあります全体HorizontalGridView。これをどうすれば解決できますか?あなたのビューは、カスタム1である場合

答えて

0

これを解決するには、HorizontalGridViewの代わりにVerticalGridViewを使用します。

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

ItemBridgeAdapterを使用し、VerticalGridViewArrayObjectAdapterを設定します。

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

カスタムビューでの問題は、あなたがJavaでフォーカス変更のリスナーを追加する必要がありますアダプター内のフォーカス・リスナーをアダプター項目のルート・ビューに追加します。

アダプター項目の作成時に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で解決策を見つけることができる感じ。

関連する問題