Android Leanback 电视

Android TV Leanback

我是 Android 电视开发的新手。我不知道要使用哪种类型的片段。我想要两个实现布局类似于上面的屏幕截图作为 jiocinema。我以某种方式在 activity 布局中使用两个 xml 片段实现了它。第二个片段在点击 API 后加载屏幕截图,因此它会在一段时间后加载。从上面的屏幕截图中可以看出,我想要将布局分为两部分。顶部是详细信息和一些按钮,底部是该电影的屏幕截图列表。

在我的情况下,问题是,底部列表部分在按下向上按钮或任何按钮之后专注于加载此特定屏幕,它永远不会失去焦点,也永远不会进入顶部。 注意:下面的片段是异步加载的,因为它会点击 api 获取屏幕截图网址

可能是我没有为这个特定的布局使用合适的片段。有人可以指出我的代码或帮助我决定使用什么来进行这种布局。虽然可以实现,但导航是主要的。

代码

activity布局

<?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>

谢谢

您必须根据自己的目的使用 BrowseFragment。它由一个 RowsFragment 和一个 HeadersFragment 组成。

BrowseFragment 将其 ObjectAdapter 的元素呈现为垂直列表中的一组行。此适配器中的元素必须是 Row 的子类。

This tutorial 可以帮助您入门。

尝试使用 V4 支持片段中的 RowSupportFragment 以获得所需的输出。

将布局分为按钮、描述和下方滚动布局两部分布局(以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>

//----------------详细片段--------------------

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);
        }
    }}