从 Android TV 中的 BrowseFragment 中删除上边距
Posted
技术标签:
【中文标题】从 Android TV 中的 BrowseFragment 中删除上边距【英文标题】:Remove top margin from BrowseFragment in Android TV 【发布时间】:2017-03-09 21:35:20 【问题描述】:如何删除空格,如下图BrowseFragment
中的虚线框所示。我设法删除了搜索按钮和标题。虽然,我还想删除空白空间并将视频行移动到屏幕顶部。
有没有办法做到这一点?
我尝试在我的 AppTheme 中设置以下内容,但我怀疑它是否有帮助:
<item name="browseRowsMarginTop">0dp</item>
<item name="browsePaddingTop">0dp</item>
【问题讨论】:
你可以通过修改leanback layouts
本身来做到这一点。
我曾尝试更改以下内容:FrameLayout topHeader = (FrameLayout) getView().findViewById(R.id.browse_headers_dock); topHeader.setVisibility(View.GONE);
但它并没有删除那个空间。你能建议我应该编辑哪个布局吗?
查看我的回答,如果您遇到任何问题,请告诉我。
【参考方案1】:
您可以使用 dimens.xml
库中提供的 dimens.xml
来执行此操作。
Follow the steps below first.
转到你的sdk
-> extras
-> android
-> support
-> v17
-> leanback
-> res
-> values
。
从他们的副本dimens.xml
文件到您当前的leanback 项目values
文件夹中。
现在您的项目values
文件夹中有dimens.xml
文件。
打开该文件并在下面找到dimen
。
默认值可能是
167dp
。
<dimen name="lb_browse_rows_margin_top">167dp</dimen>
所以将其更改为
30dp
左右或根据您的需要。
<dimen name="lb_browse_rows_margin_top">30dp</dimen>
您将在Browse Fragment
中获取行。
【讨论】:
能否请您添加答案步骤,您是如何发现这个名字正是lb_browse_rows_margin_top
?
便于查找使用 => cmd + shift + f(mac上全局搜索,查找windows)然后粘贴“lb_browse_rows_margin_top”以获得所需的文件建议。【参考方案2】:
如果您需要仅删除片段中的页眉边距而不是全局覆盖 BrowseFragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
View view = super.onCreateView(inflater, container, savedInstanceState);
FrameLayout containerDock = (FrameLayout) view.findViewById(R.id.browse_container_dock);
FrameLayout.MarginLayoutParams params = (FrameLayout.MarginLayoutParams) containerDock.getLayoutParams();
Resources resources = inflater.getContext().getResources();
int newHeaderMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 30, resources.getDisplayMetrics());
int offsetToZero = -resources.getDimensionPixelSize(R.dimen.lb_browse_rows_margin_top);
params.topMargin = offsetToZero+newHeaderMargin;
containerDock.setLayoutParams(params);
return view;
【讨论】:
我们必须在哪里添加它? @AparAmin 扩展 BrowseFragment 并覆盖 onCreateView 方法 public class CustomBrowseFragment extends BrowseFragment【参考方案3】:IanZ 解决方案完美运行。获取主容器的其他方法是
FrameLayout containerDock = getView().findViewById(R.id.browse_container_dock);
在没有覆盖 oncreateView
方法的主片段中。
【讨论】:
以上是关于从 Android TV 中的 BrowseFragment 中删除上边距的主要内容,如果未能解决你的问题,请参考以下文章
当我从一个菜单移动到另一个菜单并返回时,Leanback android Tv 中的 BrowseSupportFragment 会调用服务器
Android TV:VerticalGridFragment 行项目对齐