其实我正在为Android TV开发一个应用程序.我使用了来自leanback支持库v17的BrowseFragment来按子菜单导航.但是,现在我正在尝试构建家庭活动,如Android TV设备应用程序.你可以在这里看到它:https://medium.com/building-for-android-tv/building-for-android-tv-episode-1-2d03f9ba541e.我有问题要知道如何制作简单的行布局,比如推荐.我试过用RowsFragment类做到这一点,但我有一个错误膨胀XML.我想要没有左侧"抽屉"的BrowseFragment.
谢谢你的四个时间,抱歉我的英语不好.
我想为TV元素的BrowseFragment更改选定元素的缩放值。可能吗?还是在browserfragment中硬编码的zoom os?
对于Leanback BrowseFragment,默认情况下屏幕左侧有一个搜索视图.是一种更改默认图标SearchOrbView或隐藏它的方法.
https://cdn-images-1.medium.com/max/800/1*oIFbcdjYrIqxU55-B23tjA.gif
我在android studio中添加了一个leanback示例活动.活动与以下堆栈跟踪崩溃.我没有修改代码,我发现默认添加的所有布局都定义了layout_width和layout_height参数.
java.lang.RuntimeException: Binary XML file line #21: You must supply a layout_width attribute.
at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:608)
at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:6485)
at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:6654)
at android.widget.FrameLayout$LayoutParams.<init>(FrameLayout.java:741)
at android.support.v17.leanback.widget.BaseCardView$LayoutParams.<init>(BaseCardView.java:862)
at android.support.v17.leanback.widget.BaseCardView.generateLayoutParams(BaseCardView.java:817)
at android.support.v17.leanback.widget.BaseCardView.generateLayoutParams(BaseCardView.java:54)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:812)
at android.view.LayoutInflater.inflate(LayoutInflater.java:483)
at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at android.support.v17.leanback.widget.ImageCardView.buildImageCardView(ImageCardView.java:165)
at android.support.v17.leanback.widget.ImageCardView.<init>(ImageCardView.java:156)
at android.support.v17.leanback.widget.ImageCardView.<init>(ImageCardView.java:282)
at android.support.v17.leanback.widget.ImageCardView.<init>(ImageCardView.java:275)
at com.amazon.bueller.photos.activity.CardPresenter$1.<init>(CardPresenter.java:55)
at com.amazon.bueller.photos.activity.CardPresenter.onCreateViewHolder(CardPresenter.java:55)
at android.support.v17.leanback.widget.ItemBridgeAdapter.onCreateViewHolder(ItemBridgeAdapter.java:312)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6290)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5478)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5363)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5359)
at android.support.v17.leanback.widget.GridLayoutManager.measureScrapChild(GridLayoutManager.java:1211)
at android.support.v17.leanback.widget.GridLayoutManager.processRowSizeSecondary(GridLayoutManager.java:1277)
at android.support.v17.leanback.widget.GridLayoutManager.onMeasure(GridLayoutManager.java:1374)
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3012)
at android.view.View.measure(View.java:17935)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5548)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17935)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5548) …Run Code Online (Sandbox Code Playgroud) 我想在同一行显示两种不同类型的卡片(ListRow)。
我尝试通过添加类似于处理显示多个行类型的 viewType 来修改 Presenter 类,RecyclerVew但它不起作用。
我尝试深入研究 Presenter 和ArrayObjectAdapter代码,但没有明显的选择来实现这一点。如果有人这样做了,请指出我正确的方向。
有没有办法从 RowsSupportFragment 中删除开始填充,如箭头所示
以下样式不会删除开始填充。
<style name="SearchTheme" parent="@style/Theme.Leanback.Browse">
<item name="rowHeaderDockStyle">@style/RowHeaderDock</item>
<item name="rowHorizontalGridStyle">@style/HorizentalGridStyle</item>
</style>
<style name="RowHeaderDock">
<item name="android:paddingStart">0dp</item>
</style>
<style name="HorizentalGridStyle" parent="Widget.Leanback.Row.HorizontalGridView">
<item name="android:paddingStart">0dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)