Android TV Preferences Standard


При просмотре настроек Android TV и встроенных приложений, таких как YouTube, они, по-видимому, используют стандартную компоновку, как показано здесь:

Экран Предпочтений 1

Экран Предпочтений 2

Я не могу найти ни одного примера реализации предпочтений на Android TV и не могу найти вышеуказанные макеты, на которые ссылаются в любой из библиотек LeanBack etc.

Является ли это "стандартом", который я могу повторно использовать (как обычный Android PreferenceFragment), или мне нужно разработать свою собственную систему предпочтений?

Первое изображение может быть продублировано с помощью откинутого "BrowseFragment", но нижнее изображение не может быть реализовано с помощью чего-либо, что я до сих пор нашел.

3 8

3 ответа:

Обновить

Только что были выпущены новые библиотеки поддержки . Всем привет GuidedStepFragment! Это должно быть именно то, что вы искали.


Нет, к сожалению это представление не предусмотрено в качестве отдельного виджета в библиотеке Leanback. Если вы хотите взглянуть на себя, смотрите здесь.

Это может быть реализовано довольно легко, но, увы, вы сами по себе.

Начиная с периода времени, когда был получен ответ на оригинал, теперь существует библиотека поддержки параметров отката, которая может быть включена и использована. Смотрите следующую ссылку: http://developer.android.com/tools/support-library/features.html#v17-preference

В частности, вы не только хотите GuidedStepFragment, но и расширить BaseLeanbackPreferenceFragment.

Я нашел этот код в сборке AOSP для Android STB

Он работает для Android 6.0 AOSP, а также с оригинальным Android TV. Дополнительная проверка с помощью resolveActivity() необходима для устройств, не являющихся телевизорами.

public static String COMPONENT_TV_SETTINGS = "com.android.tv.settings/com.android.tv.settings.MainSettings";

Intent intent = new Intent();
intent.setComponent(ComponentName.unflattenFromString(COMPONENT_TV_SETTINGS));

if (intent.resolveActivity(getActivity().getPackageManager()) == null) {
    intent.setAction(Settings.ACTION_SETTINGS); // Standard settings
}

startActivity(intent);