【问题标题】:How to arrange cards on Android?如何在Android上排列卡片?
【发布时间】:2016-06-13 21:01:08
【问题描述】:

我目前正在开发一个使用卡片的应用程序。我在 Google 官方应用中看到了卡片的使用情况。

但是,Google 应用在手机和平​​板电脑上略有不同。

在手机上,它会显示下面的卡片 - 彼此相邻,没有太多空间。 (在我的手机横屏模式下也是如此)

在平板电脑上,它会将两张卡片并排放置。 (有时一大两小,有时两个相等)

这里有人可以解释一下他们是如何做到的,以及我需要添加什么样的 XML 或 Java,才能将类似的功能放入我的应用程序中。 (我的应用程序中目前有工作卡,但它们的宽度设置为 fill_parent,因此它们填满了整个屏幕)

提前非常感谢你:)

【问题讨论】:

    标签: java android android-layout material-design


    【解决方案1】:

    他们使用RecyclerView 和不同的LayoutManager 来实现这一目标。

    代码示例如下:

    // during onCreate
    RecyclerView rv = (RecyclerView)findViewById(R.id.recycler);
    LayoutManager lm;
    if(isPhone) {
       if(isLandscape) {
          lm = new GridLayoutManager(this, 2);
       } else {
          lm = new LinearLayoutManager(this);
       }
    } else {
       if(isLandscape) {
          lm = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
       } else {
          lm = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
       }
    }
    rv.setLayoutManager(lm);
    rv.setAdapter(... your adapter with the cards...);
    

    要在项目之间实现不同的间距,您可以使用RecyclerView.ItemDecoration。如果您需要页眉、页脚或其他实用程序,我建议您查看我的库 RecyclerViewTools on GitHub

    【讨论】:

    • 看起来这就是我要找的。如果明天之前我不能得到更好的解释(这里是晚上 11:15,我现在要睡一会儿),我会选择你的作为正确答案。感谢您的代码。这是很棒的工作! :)
    • 忘了说。要在卡片之间设置不同的间距,如果您的 Recycler 变得越来越复杂,您可以使用 developer.android.com/reference/android/support/v7/widget/…,请务必查看我的库,其中包含大量实用程序:github.com/eyeem/RecyclerViewTools
    • 好的。这超出了我的需要:) 我希望明天我能连续完成这两张卡。与您的参考。如果有一些关于 RecyclerView 的 youtube 教程,那么它不会是一个大问题。否则我会阅读整个文档,直到它起作用为止。
    • 只是谷歌它.. 有关于它的教程负载。古特之夜!
    【解决方案2】:

    他们在res/layout-large/my_layout.xml 等目录中为较大的设备定义了一个单独的布局文件。 Android 会自动为设备选择合适的布局。有关更多信息,请查看以下链接:

    https://developer.android.com/guide/practices/screens_support.html https://developer.android.com/training/multiscreen/screensizes.html

    【讨论】:

    • 好的。 thx 这让我明白它是如何与 XM 一起工作的。但是当我想生成这些布局时怎么办?任何的想法? :)
    • 一种方法是让您的代码检查仅包含在平板电脑布局中的布局元素。如果它存在/不为空,则使用您的平板电脑优化代码。
    【解决方案3】:

    Android 允许根据您使用的资源文件夹为不同的屏幕配置使用不同的布局 xml 文件。

    例如,名为 layout-sw400dp 的布局资源文件夹将以至少 400dp 宽显示在屏幕上

    阅读它on the official documentation

    【讨论】:

    • 好的。 thx 这让我明白它是如何与 XM 一起工作的。但是当我想生成这些布局时怎么办?任何的想法? :)
    • 你读过文档吗(不仅仅是我链接的那个页面,而是关于为安卓开发的一般页面)?到目前为止,您尝试过什么?
    • drive.google.com/file/d/0B2S68gOtHjoXOW5tRGRYMTdHazA/… 那个。我今天阅读了所有关于卡片的指南,我想我也阅读了所有关于卡片的文档。
    猜你喜欢
    • 2019-11-18
    • 2016-12-06
    • 2020-01-18
    • 2016-09-07
    • 2021-01-31
    • 2021-11-19
    • 2019-11-11
    • 2020-07-08
    • 2021-05-24
    相关资源
    最近更新 更多