如何在 RowsFragment 中使行的标题始终可见

Posted

技术标签:

【中文标题】如何在 RowsFragment 中使行的标题始终可见【英文标题】:How to make always visible headers of rows in RowsFragment 【发布时间】:2017-11-30 18:01:44 【问题描述】:

这是我现在拥有的。

只是我的 RowsFragment 是这样的,

public static class SampleFragmentB extends RowsFragment 
        private final ArrayObjectAdapter mRowsAdapter;

        public SampleFragmentB() 
            mRowsAdapter = new ArrayObjectAdapter(new ShadowRowPresenterSelector());

            setAdapter(mRowsAdapter);
            setOnItemViewClickedListener(new OnItemViewClickedListener() 
                @Override
                public void onItemClicked(
                        Presenter.ViewHolder itemViewHolder,
                        Object item,
                        RowPresenter.ViewHolder rowViewHolder,
                        Row row) 
                    Toast.makeText(getActivity(), "Implement click handler", Toast.LENGTH_SHORT)
                            .show();
                
            );
        

        @Override
        public void onCreate(Bundle savedInstanceState) 
            super.onCreate(savedInstanceState);
            createRows();
            getMainFragmentAdapter().getFragmentHost().notifyDataReady(getMainFragmentAdapter());
        

        private void createRows() 
                String json = Utils.inputStreamToString(getResources().openRawResource(
                        R.raw.page_row_example));
                CardRow[] rows = new Gson().fromJson(json, CardRow[].class);
                for (CardRow row : rows) 
                    mRowsAdapter.add(createCardRow(row));
                
        

        private Row createCardRow(CardRow cardRow) 
            PresenterSelector presenterSelector = new CardPresenterSelector(getActivity());
            ArrayObjectAdapter adapter = new ArrayObjectAdapter(presenterSelector);
            for (Card card : cardRow.getCards()) 
                adapter.add(card);
            

            HeaderItem headerItem = new HeaderItem(cardRow.getTitle());
            return new CardListRow(headerItem, adapter, cardRow);
        
    

这正是我想做的,

所以我想让每一行的标题始终可见,而无需选择或关注 RowsFragment。我正在使用leanback v24 在每个标题项中添加多行。

【问题讨论】:

【参考方案1】:

您可能需要查看适用于 android TV 的 Sofa 库,该库通过提供一组更强大的功能扩展了 Leanback library 功能。在BrowseSupportFragment 中,mRowsFragment.setExpand 应该是true。补充参考:how to always show headers in RowsFragment

【讨论】:

感谢您的帮助,但在此项目中不允许使用沙发。如果没有其他解决方案,我可能不得不使用它..感谢您的回答。

以上是关于如何在 RowsFragment 中使行的标题始终可见的主要内容,如果未能解决你的问题,请参考以下文章

如何在datagrid中使一行的单元格不可点击

使行扩展元素,即 extjs 网格和图表在窗口调整大小时调整大小

在 BrowseFragment 之外重用 AndroidTV RowsFragment

使用 RowsFragment 时,ObjectAdapter.setPresenterSelector 有啥作用吗?

如何在 C++ 中使 cin 不换行? [复制]

Android TV:RowsFragment 项目点击在少数情况下不起作用