Android TV RowsFragment - 无法禁用行调光效果

Dan*_*fir 0 android android-fragments android-tv

我有一个扩展RowsFragment的片段,无论我尝试什么,我都无法禁用未选择的行上的调光效果(第一张图片).

无法禁用未选定行的调光

这是我的代码:

public class MainFragment extends RowsFragment {
private static final String TAG = MainFragment.class.getSimpleName();

private ArrayObjectAdapter mRowsAdapter;
private static final int GRID_ITEM_WIDTH = 300;
private static final int GRID_ITEM_HEIGHT = 200;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    Log.i(TAG, "onActivityCreated");
    super.onActivityCreated(savedInstanceState);

    loadRows();

}

private void loadRows() {
    mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter(FocusHighlight.ZOOM_FACTOR_LARGE, false));


    HeaderItem cardPresenterHeader = new HeaderItem(1, "CardPresenter");
    CardPresenter cardPresenter = new CardPresenter();
    ArrayObjectAdapter cardRowAdapter = new ArrayObjectAdapter(cardPresenter);


    for(int i=0; i<10; i++) {
        Movie movie = new Movie();
        movie.setTitle("title" + i);
        movie.setStudio("studio" + i);
        cardRowAdapter.add(movie);
    }

    mRowsAdapter.add(new ListRow(cardPresenterHeader, cardRowAdapter));
    mRowsAdapter.add(new ListRow(cardPresenterHeader, cardRowAdapter));

    setAdapter(mRowsAdapter);

}
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么变化或组合(使用useFocusDimmer标志,尝试使用BrowseFragment等)我无法得到我正在寻找的结果.

我得到的最接近的是改为VerticalGridFragment和Presenter,但这个功能缺乏,它只是我想要完成的(第二张图片).

我希望它看起来如何的例子

提前致谢,

ULa*_*ins 6

您必须将RowsFragmentRowPresenter子类一起使用.在RowPresenter子类中,您可以定义自定义选择动画或尝试调用setSelectEffectEnabled.

摘自文档:

当用户滚动行时,片段将启动动画并调用setSelectLevel(Presenter.ViewHolder,float),浮点值介于0和1之间.默认情况下,RowPresenter在行视图顶部绘制一个暗淡覆盖,用于不是选择.子类可以通过使isUsingDefaultSelectEffect()返回false并覆盖onSelectLevelChanged(ViewHolder)来应用不同的选择效果来覆盖此默认效果.

调用setSelectEffectEnabled(boolean)来启用/禁用选择效果,这不仅会启用/禁用默认的暗淡效果,而且子类也必须尊重此标志.