15

Android TV アプリケーションで Google Leanback ウィジェットを使用しています。ListRows を含む RowsFragment を利用します。

私が判断しようとしているのは、行の 1 つ内の特定のオブジェクトにプログラムでスクロールする方法があるかどうかです。Leanback ウィジェットのドキュメントを調べましたが、探しているものが見つかりません。

4

5 に答える 5

11

Leanback の最新バージョン (v23.3.0 以降と考えてください) では、行の位置を指定するだけでなく、行に対してオプションのタスクを実行できるようになりました。あなたの場合、タスクは次のようなプログラムによる選択になります。

BrowseFragment.setSelectedPosition(0, true, new ListRowPresenter.SelectItemViewHolderTask(2));

カスタム リスト行プレゼンターなどを実装する必要はありません

于 2016-06-17T09:33:04.223 に答える
6

「戻るを押して行の最初の項目に戻る」を実装する必要があるときにそれを行いました。

Activity のonBackPressed()からこのメソッドを呼び出していました。

このメソッドがfalseを返す場合、 Activity.super.onBackPressed() を呼び出します。true の場合-ありません。

    public boolean onBackPressed(){
        boolean consumeBack;

        int selectedRowPosition = getRowsFragment().getSelectedPosition();

        ListRowPresenter.ViewHolder selectedRow = (ListRowPresenter.ViewHolder) getRowsFragment().getRowViewHolder(selectedRowPosition);
        int selectedItemPosition = selectedRow.getSelectedPosition();

        if(selectedItemPosition == 0){
            consumeBack = false;
        } else {
            consumeBack = true;
            getRowsFragment().setSelectedPosition(selectedRowPosition, true, new ListRowPresenter.SelectItemViewHolderTask(0));
        }
        return consumeBack;
}

「0」の代わりに、必要な任意の位置を設定できます。

于 2016-07-26T14:42:19.513 に答える