【问题标题】:Responsive layout for AndroidAndroid的响应式布局
【发布时间】:2017-12-01 04:38:09
【问题描述】:

我想让我的活动中的按钮根据其布局大小改变方向。对于平板电脑,它需要在一行中显示两个相同大小的按钮,对于小屏幕手机,每行一个拉伸宽度的按钮。安卓可以吗?我该怎么做?

【问题讨论】:

  • 看看this的答案。
  • 为纵向和横向模式创建不同的布局
  • 有没有办法不创建多个布局?我可以使用约束布局吗?
  • 看我的帖子对你有帮助
  • 我不明白为什么这个问题被否决了。很奇怪。

标签: android android-layout


【解决方案1】:

你必须在你的android资源文件夹中使用不同的布局文件夹

喜欢

layout-sw320dp
layout-sw480dp
layout-sw600dp
layout-sw720dp

layout-sw720dp

layout-sw720dp 以 10 英寸 Tab 表示

layout-sw600dp

layout-sw600dp 以7英寸Tab表示

layout-sw480dp

layout-sw480dp 在 4.5 英寸及以上的手机中表示

layout-sw320dp

layout-sw320dp 在 4.5 英寸以下的手机中表示

注意,也请遵循您应该使用不同的 dimens 文件

喜欢

values-sw320dp
values-sw480dp
values-sw600dp
values-sw720dp

更多信息:

http://android-developers.blogspot.in/2011/07/new-tools-for-managing-screen-sizes.html

Different values folders in android

【讨论】:

  • 如果你要走这条路,我建议你使用布局合并。我将为活动/片段创建一个布局,然后为按钮容器创建一个合并布局。然后创建一堆按钮容器来处理所有可能的大小。这并不理想,但比仅仅因为几个按钮而复制一个大布局要好。 developer.android.com/training/improving-layouts/…
  • 是的,在这个原因我也告诉过,使用不同类型的尺寸文件进行管理
【解决方案2】:

您可能想看看Flexbox-layout(由 Google 制作)。如果您熟悉 CSS Flexbox,您应该对此感到宾至如归。

编辑:如果您使用 RecyclerView,另一种选择是使用 StaggeredGridLayoutManager。它不会自动执行您想要的操作,但是,您可以获取屏幕大小,然后计算您想要的列数。我会先尝试使用 flexbox,但我已经对交错的进行了类似的操作。

【讨论】:

  • 为什么投反对票?这似乎是一个很好的用例。
  • 我可以使用内置布局实现相同的功能吗?例如:约束布局?
  • 我刚刚编辑了我的答案以包含第二个想法。如果您打算进行此滚动,则将 StaggeredGridLayoutManager 与 RecyclerView 一起使用并动态设置列数可以达到预期的效果。只需确保所有项目的高度相同。
  • 要回答您关于 ConstraintView 的问题,我不确定。不过好像不行:stackoverflow.com/questions/45699693/…
  • 不确定,但它显然会做一些计算。我建议值得一试。你在屏幕上放了多少个按钮?我最担心的是它似乎是一个早期版本,但这是谷歌制造的东西,所以它可能不是真正的错误。您可以像添加约束布局一样将其添加到您的项目中;在你的 build.gradle 文件中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
  • 1970-01-01
  • 2020-01-30
相关资源
最近更新 更多