Я хочу сделать вкладку в верхней части экрана, как это:Android TV, как сделать вкладку в верхней части экрана?
Я знаю, что tabLayout и ViewPager можно решить по телефону. Однако, как это сделать на Android-телефоне?
Я хочу сделать вкладку в верхней части экрана, как это:Android TV, как сделать вкладку в верхней части экрана?
Я знаю, что tabLayout и ViewPager можно решить по телефону. Однако, как это сделать на Android-телефоне?
Существует несколько способов сделать это, но я думаю, что короткий ответ - это то, что вы делаете, это должно быть обычным явлением. До сих пор leanback
- единственная инфраструктура, предлагаемая Google для любых специфических для телевидения компонентов, и эта инфраструктура предоставляет только левый навигационный ящик.
Я могу предложить вам одно решение, если вы используете leanback. Вы можете использовать BrowseFragment
с пользовательским TitleView
, который имеет вкладки и отслеживает фокус вкладок внутри. Пока ваш пользовательский просмотр реализует TitleViewAdapter.Provider
, вы можете использовать его с BrowseFragment
как TitleView
. Преимущество этого заключается в том, что вы можете автоматически его оживить и выйти из верхней части с небольшой дополнительной работой.
Что касается пользовательского вида, вы можете указать focusRight и focusLeft на каждой вкладке и есть слушатель onFocus
или onClick
поменяться из фрагментов в BrowseFragment
. This class in leanback показывает, как обменивать фрагменты в BrowseFragment
(в частности, PageRowFragmentFactory
).
Я бы очень рекомендовал вам клонировать leanback showcase app, что команда Android собрала и поиграла в этом.
Для специфики настройки TitleView, это будет выглядеть, как показано ниже:
Создайте свой собственный вид
class YourTitleView extends RelativeLayout implements TitleViewAdapter.Provider {
... do custom view setup/logic here ...
}
Создайте файл XML с именем lb_browse_title.xml
. Это переопределяет макет, который они используют для создания TitleView.
Поместите свой заголовок в этот файл lb_browse_title.xml
и убедитесь, что он имеет идентификатор @+id/browse_title_group
. Это настолько скудный знает, чтобы захватить ваш заголовок.
<com.your.android.app.views.YourTitleView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/browse_title_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/browseTitleViewStyle" />
Затем создать фрагмент, который расширяет BrowseFragment
и он должен автоматически применить вид заголовка. Пожалуйста, обратитесь к приложению leanback-showcase
, чтобы получить и запустить BrowseFragment
.
Не могли бы вы предоставить полный код здесь? –