Android TV RowsFragment - 无法禁用行调暗效果
Android TV RowsFragment - Can't disable row dimming effect
我有一个扩展 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
提前致谢,
您必须使用 RowsFragment together with a RowPresenter subclass. In the RowPresenter subclass you can define your custom Selection animation or try to call setSelectEffectEnabled。
文档摘录:
When a user scrolls through rows, a fragment will initiate animation
and call setSelectLevel(Presenter.ViewHolder, float) with float value
between 0 and 1. By default, the RowPresenter draws a dim overlay on
top of the row view for views that are not selected. Subclasses may
override this default effect by having isUsingDefaultSelectEffect()
return false and overriding onSelectLevelChanged(ViewHolder) to apply
a different selection effect.
Call setSelectEffectEnabled(boolean) to enable/disable the select
effect, This will not only enable/disable the default dim effect but
also subclasses must respect this flag as well.
我有一个扩展 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
提前致谢,
您必须使用 RowsFragment together with a RowPresenter subclass. In the RowPresenter subclass you can define your custom Selection animation or try to call setSelectEffectEnabled。
文档摘录:
When a user scrolls through rows, a fragment will initiate animation and call setSelectLevel(Presenter.ViewHolder, float) with float value between 0 and 1. By default, the RowPresenter draws a dim overlay on top of the row view for views that are not selected. Subclasses may override this default effect by having isUsingDefaultSelectEffect() return false and overriding onSelectLevelChanged(ViewHolder) to apply a different selection effect.
Call setSelectEffectEnabled(boolean) to enable/disable the select effect, This will not only enable/disable the default dim effect but also subclasses must respect this flag as well.