Android TV Leanback - PullRequest
       23

Android TV Leanback

0 голосов
/ 02 ноября 2018

layout I am trying to achieve

Я новичок в разработке Android TV. Я не знаю, какой тип фрагмента использовать. Я хочу, чтобы два достигли макета, подобного скриншоту выше как jiocinema. Каким-то образом я достиг этого, используя два фрагмента XML внутри макета активности. Второй фрагмент загружает скриншот после нажатия API, поэтому он загружается через некоторое время. Как видно из приведенного выше снимка экрана, я хочу, чтобы макет состоял из двух частей ... сверху одна с деталями и некоторыми кнопками, а нижняя - это список снимков экрана этого фильма.

В моем случае проблема в том, что нижняя часть списка фокусируется на загрузке этого конкретного экрана, после чего при нажатии кнопки вверх или любой кнопки он никогда не теряет фокус и никогда не перемещается в верхнюю часть. Примечание: фрагмент ниже загружается асинхронно, так как он достигает API для URL скриншота

Может быть, я не использовал надлежащие фрагменты для этого конкретного макета. Может кто-нибудь указать мне код или помочь мне решить, что использовать для такого типа макета. Как это может быть достигнуто, но главное - навигация.

код

макет активности

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/photo_label_box">
    <fragment
        android:id="@+id/detail_layout"
        android:layout_width="match_parent"
        android:name="com.DetailsActivityGame$Detalfragment"
        android:layout_height="200dp"></fragment>
    <fragment
        android:id="@+id/row_layout"
        android:layout_width="match_parent"
        android:layout_below="@+id/detail_layout"
        android:name="com.DetailsActivityGame$SampleFragmentC"
        android:layout_height="wrap_content"></fragment>
</RelativeLayout>

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Попробуйте использовать RowSupportFragment в V4 Support Fragment для получения желаемого результата.

Разделение макета на макет из двух частей с кнопками, описанием и макетом прокрутки ниже (Представлено RowSupportFragment)

// ---------------------- detail_layout

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/leader_background">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/main_layout"
  //your own layout design for buttons and description
</RelativeLayout>
<fragment
    android:name="FragmentScreenshots"
    android:id="@+id/screenshot_fragment"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />
    </LinearLayout>

// ---------------- Detailfragment --------------------

public static class Detailfragment extends Fragment {
    public  Detailfragment(){ }

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.detail_layout, container, false);
        //————————your own implementation—————————————————————————
        return view;
     }
     public static class FragmentScreenshots extends RowsSupportFragment {
         private ArrayObjectAdapter mRowsAdapter = null;
          public FragmentScreenshots() {
            mRowsAdapter = new ArrayObjectAdapter(new ShadowRowPresenterSelector());
            setAdapter(mRowsAdapter);
           }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
          //———————Provide data accordinally———————————
             List<ScreenshotItem> list;

             // Add a Related items row
            ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(
                    new ScreenshotCardPresenter(getActivity()));
            for (ScreenshotItem s:list)
            {
                listRowAdapter.add(s);
            }
            HeaderItem header = new HeaderItem("Screenshots");
            mRowsAdapter.add(new ListRow(header, listRowAdapter));
            setAdapter(mRowsAdapter);

            setOnItemViewClickedListener(new OnItemViewClickedListener() {
                @Override
                public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder rowViewHolder, Row row) {
                    if (item instanceof ScreenshotItem) {
                                                  }
                    else{
                                                }
                }
            });

            setOnItemViewSelectedListener(new OnItemViewSelectedListener() {
                @Override
                public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder rowViewHolder, Row row) {

                }
            });
        }

        @Override
        public void setExpand(boolean expand) {
            super.setExpand(true);
        }

        @Override
        public void setOnItemViewClickedListener(BaseOnItemViewClickedListener listener) {
            super.setOnItemViewClickedListener(listener);
        }

        @Override
        public void setOnItemViewSelectedListener(BaseOnItemViewSelectedListener listener) {
            super.setOnItemViewSelectedListener(listener);
        }
    }}
0 голосов
/ 02 ноября 2018

Вы должны использовать BrowseFragment для своих целей. Он состоит из фрагмента строк и фрагмента заголовков.

BrowseFragment отображает элементы своего ObjectAdapter в виде набора строк в вертикальном списке. Элементы в этом адаптере должны быть подклассами Row.

Этот учебник поможет вам начать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...