10

アプリの Leanback サポートを開始しています。UI 要件に従って、各ヘッダーに対応する複数のリスト行を追加する必要があります。これは、Android TV で Youtube アプリが行うこととまったく同じです。デフォルトの ListRowPresenterは、1 つのリスト行とそのヘッダーのみをレンダリングしているようです。複数のリスト行をサポートするプレゼンターはありますか? 各項目に RowsFragment が埋め込まれたカスタム プレゼンターを作成する行について考えています。私のアプローチが間違っている場合は修正してください。ここに画像の説明を入力

4

2 に答える 2

20

Leanback チームは最近ListRow、1 つHeaderItemのバージョン24.0.0のライブラリに対して複数の のサポートを追加しました。RowsFragmentにマップする を指定できますHeaderItemLeanback ショーケースでその例を見ることができます。具体的には、ここに例を提供するファイルがあります。

どの Fragments がどのsにマップされるかを指定PageRowFragmentFactoryする必要がある new があります。そのようです:BrowseFragmentHeaderItem

    @Override
    public Fragment createFragment(Object rowObj) {
        Row row = (Row)rowObj;
        mBackgroundManager.setDrawable(null);
        if (row.getHeaderItem().getId() == HEADER_ID_1) {
            return new SampleFragmentA();
        } else if (row.getHeaderItem().getId() == HEADER_ID_4) {
            return new WebViewFragment();
        }
        throw new IllegalArgumentException(String.format("Invalid row %s", rowObj));
    }

上記のメソッドで a のインスタンスを返すだけで、複数の s を含む を 1 つの にマップするRowsFragmentことができます。RowsFragmentListRowHeaderItem

現時点では、バージョン 24.0.0 の Leanback を使用して、gradle ファイルに次の行を追加することで、この優れた機能にアクセスできます。

compile 'com.android.support:leanback-v17:24.0.0

警告が表示される場合がありますが、今のところ無視しても問題ありません。

また24.0.0、Leanback のバージョンには、おしゃれなトランジション アニメーションやよりクリーンな API など、他にも非常に優れた機能がたくさんあります。上記でリンクしたサンプル プロジェクトにすべて含まれています。また、Google I/O からの追加機能についての講演もあります。

于 2016-06-13T23:39:10.113 に答える
7

複数のリスト行をサポートするプレゼンターはありますか?

私が知っていることではありません。問題は、BrowseFragment がそのサブクラスの子のみを受け入れることRowです。このため、BrowseFragment の各エントリには 1 つの行 (およびそれぞれのヘッダー) しか存在できません。

各項目に RowsFragment が埋め込まれたカスタム プレゼンターを作成する行について考えています。私のアプローチが間違っている場合は修正してください。

先ほど述べたように、カスタム プレゼンターを作成しても効果があるとは思えません。

これまでに思いついた唯一の解決策は、BrowseFragment のカスタム バージョンを ( RowsFragmentandHeadersFragmentクラスを手動で拡張して) 作成し、あらゆるタイプのフラグメントをサポートすることです。

興味があれば、プロセスに関する一連の記事を書きました https://medium.com/building-for-android-tv/

BrowseFragment のカスタム バージョンを提供するベース プロジェクトhttps://github.com/dextorer/BuildingForAndroidTV

また、このカスタム コンポーネントを使いやすくするためのライブラリを作成することも検討しています。

于 2015-07-03T08:46:28.817 に答える