Android TV的Leanback:取消设置视频标题会增加行间距

鸡2

所述的PlaybackOverlayFragment示例应用程序使用PlaybackControlsGlue建立基于数据模型播放控件。这是使用标准胶水时的外观:在此处输入图片说明

我的问题是我不希望标题/字幕文本出现在主播放器控制栏上方-我们希望它们显示在播放器屏幕的左上方。因此,要禁用标题/字幕的显示,我覆盖createControlsRowAndPresenter()了粘合,而是使用PlaybackControlsRowPresenter的empty-args构造函数:

@Override
public PlaybackControlsRowPresenter createControlsRowAndPresenter() {
    PlaybackControlsRow controlsRow = new PlaybackControlsRow(this);
    setControlsRow(controlsRow);
    final View.OnKeyListener onKeyListener = this;
    PlaybackControlsRowPresenter presenter = new PlaybackControlsRowPresenter() { // no AbstractDetailsDescriptionPresenter argument
        @Override
        protected void onBindRowViewHolder(RowPresenter.ViewHolder vh, Object item) {
            super.onBindRowViewHolder(vh, item);
            vh.setOnKeyListener(onKeyListener);
        }
        @Override
        protected void onUnbindRowViewHolder(RowPresenter.ViewHolder vh) {
            super.onUnbindRowViewHolder(vh);
            vh.setOnKeyListener(null);
        }
    };

    // secondaryActionsAdapter setup not shown
    presenter.setOnActionClickedListener(new OnActionClickedListener() {
        @Override
        public void onActionClicked(Action action) {
            dispatchAction(action);
        }
    });

    return presenter;
}

结果?没有标题/字幕显示,但是现在主控件栏和其他行之间的间距更大:未设置标题时的间距几乎是原来的两倍

我可能在做错什么,还是leanback库存在错误?

鸡2

原来,播放控件需要在其上方有一些视图,这样它们才不会占据容器视图的顶部(@Nick是正确的)。但是我想分享我的解决方案,以防任何人有类似的需求。

PlaybackControlsRowPresenter可以接受其构造函数中的任何演示者,而不仅仅是AbstractDetailsDescriptionPresenters。因此,createControlsRowAndPresenter()应该如下所示:

EmojiRowPresenter emojiRowPresenter = new EmojiRowPresenter() {
            @Override
            protected void onBindEmojiInfo(EmojiRowView rowView, EmojiInfo emojiInfo) {
                rowView.setEmojiInfo(emojiInfo);
            }
        };
PlaybackControlsRowPresenter presenter = new PlaybackControlsRowPresenter(emojiRowPresenter) { // replace the default description presenter with custom presenter
... 
}

// everything else stays as before

EmojiRowPresenter是Presenter的子类,如下所示:

public abstract class EmojiRowPresenter extends Presenter {
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent) {
        EmojiRowView emojiRowView = new EmojiRowView(parent.getContext());
        emojiRowView.setFocusable(true);
        emojiRowView.setFocusableInTouchMode(true);
        return new ViewHolder(emojiRowView);
    }

    @Override
    public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) {
        EmojiRowView emojiRowView = (EmojiRowView) viewHolder.view;
        PlaybackControlHelper glue = (PlaybackControlHelper) item;
        EmojiInfo emojiInfo = glue.getEmojiInfo();
        if (emojiInfo != null) {
            onBindEmojiInfo(emojiRowView, emojiInfo);
        }
    }

    @Override
    public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) {
        // ...
    }

    protected abstract void onBindEmojiInfo(EmojiRowView rowView, EmojiInfo emojiInfo);
}

当然,EmojiRowView从定义每个项目的布局中创建视图。这是最终结果:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

gedit:如何增加行间距?

来自分类Dev

UIbutton标题行间距

来自分类Dev

设置文本的行间距

来自分类Dev

如何增加ggplot2中的图例标题行间距?

来自分类Dev

Android TV Leanback

来自分类Dev

如何在不增加行间距的情况下对齐一行文本?

来自分类Dev

简化Android TV / Leanback的登录

来自分类Dev

表格行的行间距

来自分类Dev

Android TV Leanback imagecardview文字颜色

来自分类Dev

使用Materialize CSS的行间距

来自分类Dev

Swift中的NSTextField行间距

来自分类Dev

减少NotoSansCJK字体行间距?

来自分类Dev

表格行间距-引导程序

来自分类Dev

tkinter文本行间距

来自分类Dev

多行合并字段和行间距

来自分类Dev

CRichEditCtrl中意外的双行间距

来自分类Dev

QTreeWidget中的垂直行间距

来自分类Dev

单词在单词中的行间距相等

来自分类Dev

引导程序为什么会影响网格行间距?有什么预防方法吗?

来自分类Dev

PHP-为什么使用foreach显示关联数组会导致行间距?

来自分类Dev

如何在PowerShell中创建MS Word文档并将段落/行间距设置为无?

来自分类Dev

Android TV通过URL播放视频

来自分类Dev

Android:当您取消而不是关闭应用程序时,SharedPreferences会额外增加4个空格

来自分类Dev

在matplotlib中更改刻度标签行间距

来自分类Dev

使用CSS网格的行间距为1px

来自分类Dev

SwiftUI将列表中的行间距减少为null

来自分类Dev

删除段落前的残留多行间距

来自分类Dev

更改水平描述列表<dl>上的行间距

来自分类Dev

使用CSS网格的行间距为1px