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

时间:2017-02-07 12:22:59

标签: android android-fragments android-tv

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

Can't disable the dimming of unselected rows

这是我的代码:

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);

}

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

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

Example of how I want it to look

提前致谢,

1 个答案:

答案 0 :(得分:6)

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

摘自文件:

  

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

     

调用setSelectEffectEnabled(boolean)来启用/禁用select   效果,这不仅会启用/禁用默认的暗淡效果   同样,子类也必须尊重这个标志。