2017-02-07 4 views
0

У меня есть фрагмент, расширяющий RowsFragment, и независимо от того, что я пытаюсь, я не могу отключить эффект затемнения на невыбранных строках (первое изображение).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

Спасибо заранее,

ответ

3

Вы должны использовать RowsFragment вместе с RowPresenter подкласса. В подклассе RowPresenter вы можете определить свою настраиваемую анимацию выделения или попытаться позвонить setSelectEffectEnabled.

Выдержка из документации:

Когда пользователь прокручивает строк, фрагмент будет инициировать анимацию и вызвать setSelectLevel (Presenter.ViewHolder, поплавковый) со значением флоат между 0 и 1. По умолчанию, RowPresenter рисует тусклый оверлей на в верхней части строки для просмотра, которые не выбраны. Подклассы могут переопределить этот эффект по умолчанию с помощью isUsingDefaultSelectEffect() вернуть false и переопределить onSelectLevelChanged (ViewHolder), чтобы применить к другому эффекту выбора.

Вызова setSelectEffectEnabled (булевы) для включения/отключения выберите эффекта, Это позволит не только включить/отключить тусклый эффект по умолчанию, но также подклассы должны уважать этот флаг, а также.

+0

Wow setSelectEffectEnabled (boolean) в значительной степени решил мою проблему! Теперь я пытаюсь изменить цвет текста RowHeader. Я попытался сделать это: http://stackoverflow.com/questions/41780279/android-tv-how-to-change-color-of-title-and-color-of-headeritem, но это не помогает мне. –

+0

См. Мой ответ на ссылку SO, на которую вы ссылались, надеюсь, что это поможет – ULazdins

+1

Спасибо! Действительно, это произошло, хотя мне пришлось изменить одну строку –

Смежные вопросы