如何自动设置跨度计数和图标大小

2024-03-28

我正在使用回收器视图和卡片视图来显示应用程序中的图标。 我无法弄清楚如何调整应用程序图标的大小并根据屏幕尺寸自动增加/减少跨度计数。这是我正在做的显示它的操作,并且花费计数固定为 3。

    RecyclerView mrv = (RecyclerView) findViewById(R.id.recyclerview_id);
    RecyclerViewAdapter myAdapter = new RecyclerViewAdapter(this, lsStore);
    mrv.setLayoutManager(new GridLayoutManager(this, 3));
    mrv.setAdapter(myAdapter);

XML 如下

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cardview_id"
android:clickable="true"
android:foreground="?selectableItemBackground"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="15dp"
android:layout_marginVertical="20dp"
cardview:cardCornerRadius="6dp">


<android.support.v7.widget.LinearLayoutCompat
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <ImageView
        android:id="@+id/store_image_id"
        android:layout_width="wrap_content"
        android:layout_height="110dp"
        android:scaleType="centerCrop"
        android:background="#2D2D2D"/>

    <TextView
        android:id="@+id/store_name_id"
        android:textColor="#2d2d2d"
        android:textSize="13sp"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/StoreTitle"/>


</android.support.v7.widget.LinearLayoutCompat>

该应用程序在 5 英寸 5 英寸到 6 英寸左右的屏幕上表现良好,但在更小/更大的屏幕上,图标看起来很混乱。有人可以指导我如何实现这一目标吗?


您可以计算列数。定义一个静态函数来计算列数:

public class Utility {
    public static int calculateNoOfColumns(Context context) {
        DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
        float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
        int noOfColumns = (int) (dpWidth / 180);
        // Where 180 is the width of your grid item. You can change it as per your convention.
        return noOfColumns;
    }
}

然后,当使用GridLayoutManager在活动或片段中,您可以这样做:

int mNoOfColumns = Utility.calculateNoOfColumns(getApplicationContext());

// Some code...

mGridLayoutManager = new GridLayoutManager(this, mNoOfColumns);
mRecyclerView.setLayoutManager(mGridLayoutManager);

// Some code...

我希望这可以帮助你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何自动设置跨度计数和图标大小 的相关文章

  • Listview Onclick Listener 更新 Cardview 布局后不工作

    我已经更新了布局 用按钮替换了 ImageViews 当我将旧布局与 ImageViews 一起使用时 Listview OnCLick 侦听器现在无法工作 如果需要进一步正确格式化 请告诉我 我们将提供任何帮助 活动中的监听器 lvIte
  • 如何知道 Android TalkBack 是否处于活动状态?

    我正在开发一个使用 TalkBack 来指导人们完成的应用程序 然而 在这些情况下 我希望应用程序的布局有一些细微的差异 以便导航更容易 并且还有额外的语音输出 使用 TextToSpeech 来帮助指导用户 我的问题是 如果用户激活了 T
  • Xamarin.Android 应用程序仅在干净编译时找到启动器活动

    我有一个Xamarin Android标记为 MainLauncher 的活动称为 Login 当我第一次按 F5 时 应用程序在模拟器中正常启动 然后我停下来 进行一些代码更改 再次按 F5 我可以看到应用程序在模拟器中启动 当我收到以下
  • Eclipse 构建 Android 应用程序:如何在编译时创建两个版本?

    我正在编写一个 Android 应用程序 并希望基于相同的代码创建两个版本 免费版本和高级版本 我有两个版本的一个代码库 具有各种运行时检查来启用或禁用某些功能 例如 public class MyAppContext extends Ap
  • 如何链接 ndk 应用程序中的任何库

    From 本教程 http marakana com forums android examples 49 html 看到我有一个预构建的静态库 名为stackoverflow a它有stackoverflow h 现在我想使用该静态库的功
  • mapFragment.getMapAsync 处的 NullPointerException

    在解决了与我的标题相关的问题后 我找不到问题的解决方案 我有一个NullPointerException at mapFragment getMapAsync 下面是我的MapActivity code package com exampl
  • 如何在 ActionBar Sherlock 中使用滑动菜单?

    我正在尝试在使用操作栏 Sherlock 的现有项目中使用滑动菜单 但我无法做到这一点 如果您能给我一个简单的演示或教程来向我展示如何做到这一点 那就太好了 我们必须使用片段来实现滑动菜单吗 Update 当用户单击滑动菜单列表中的某个项目
  • Android Studio 1.0.1 APK META-INF/DEPENDENCIES 中复制的重复文件

    我安装了 Android Studio 版本 1 0 1 并尝试将我的项目从 eclipse 导入到它 它给了我以下错误 Error Execution failed for task app packageDebug Duplicate
  • java.lang.NullPointerException:Android尝试调用虚拟方法错误

    我的 android webview 片段应用程序崩溃了 在我添加了一个按钮从一个片段转到另一个片段后 控制台上的错误是 E AndroidRuntime FATAL EXCEPTION main Process com ahmed sto
  • 如何以编程方式设置(文本)视图属性?

    我拼命尝试以编程方式设置表中单元格的 TextView 属性 但无法使其工作 每当我设置布局属性时 该字段将不会出现 但不会给出任何错误或异常 我将其归结为这个简单的例子 package mmo application listpro im
  • 在 Android 中 - 如何使用 ClickableSpan 只注册长点击

    我想注册对包含在 ClickableSpan 中的文本的点击 前提是点击时间超过 1 秒 有什么办法可以做到这一点吗 如果没有 捕获双击也可以 如果 onClick 方法捕获了一个包含有关点击的一些元数据的事件 那就太好了 那么如果点击长度
  • Espresso + Junit4 - 在运行所有测试之前登录一次

    我想为我的一个应用程序编写一些自动化测试 所有功能都需要登录 所以 我已经编写了测试 但对于每个测试 它都是进行登录并测试功能 有没有办法帮助我只登录一次然后运行所有测试 最简单的方法是仅用一种测试方法编写所有测试 但我认为实现这一目标的方
  • 将 TextField 与 LibGDX 结合使用

    我正在使用 LibGDX 开发一款 Android 游戏 并且想要实现两个TextFields 登录到服务器 据我所知我需要使用Stage https libgdx badlogicgames com nightlies docs api
  • Android 中的 EditText onClickListener

    我想要一个 EditText 它在按下时创建一个 DatePicker 所以我写了下面的代码 mEditInit EditText findViewById R id date init mEditInit setOnClickListen
  • Android Camera2 API 预览有时会失真

    我正在使用 Camera2 API 构建自定义相机 到目前为止 除了预览有时会失真之外 相机工作得很好 假设我连续打开相机 7 次 所有尝试均成功 但第 8 次相机预览失真 看起来它使用宽度作为高度 反之亦然 我的代码基于camera2的G
  • Espresso,查找对话框并将其关闭

    我试图找到一个对话框取消按钮并将其推入 Espresso UI 测试 但我做不到 这是我的代码 onView withId R id dialog close button check matches isDisplayed 最好的解决方案
  • Android 中的 RoboSpice 库是什么

    我正在尝试了解 android 中的 RoboSpice 库 我在这里看到了在线文档 https github com stephanenicolas robospice wiki Starter Guide 我尝试过什么 我之前研究过使用
  • Android Studio:通过命令行安装Release App

    我想从命令行导出 apk 文件 release apk 当我运行这个命令时 gradlew installRelease 我发现了这个 在根项目 中找不到 Android Studio 任务 安装版本 一些候选者是 卸载版本 我该如何解决
  • Android - 深色模式问题:深色背景上的黑色文本

    当我启用深色模式时 我的应用程序上的某些菜单看起来很糟糕 非常暗的背景上的黑色文本 我对颜色完全是一个初学者 我还没有接触过 android studio 上默认颜色设置的任何内容 所以我有默认的两个主题 XML 和 Color Xml
  • Android Map API V2 设置自定义 InfoWindow 位置

    我对地图上的所有标记使用 InfoWindowAdapter Api v2 所有标记都清晰可见 问题是我的自定义信息窗口的大小约为 500px 300px 当我触摸地图上的任何点时 它被设置为屏幕中心 因此信息窗口将从顶部裁剪 我的要求是根

随机推荐

  • 用于商业应用程序的本机 .NET 版本的 Rsync 可用吗?

    目前我们正在评估是否可以提供rsync http en wikipedia org wiki Rsync对我们销售的应用程序的支持 我用谷歌搜索并找到了一些参考资料 rsync 的本机 Window 版本 http www backupce
  • 当 docker 使用 `/bin/sh -c` 运行节点脚本时,SIGTERM 无法到达节点脚本

    当我的 Dockerfile 结尾时 CMD node docker 使用以下命令运行该容器 bin sh c node 而不是简单地node 我知道 我可以这样做CMD node 我认为这种行为实际上很好 因为这意味着在容器内部PID1
  • Xamarin Forms iOS 错误任务图标

    我认为有一个非常简单的问题 但我不太确定我是否做错了什么或者这是否是 Xamarin 问题 我有一个 iOS Xamarin Forms 项目 在该项目中 我无法设置按两次主页按钮时显示在 任务 视图中的 任务 图标 它始终显示 xamar
  • 对字符串不变性的困惑

    我有以下代码 public class StaticImplementer private static String str ABC public static void main String args str str XYZ 问题 这
  • C++ 类对象的引用和非引用返回 - 为什么输出相同?

    考虑以下代码 class Test public int data Test data 9 Test myfunction void print cout lt lt data lt
  • Symfony 应用程序 - 如何将计算字段添加到 Propel 对象?

    处理 Propel 对象的计算字段的最佳方式是什么 假设我有一个对象 Customer 它有一个相应的表 customers 并且每一列对应于我的对象的一个 属性 我想做的是 在视图 A 上使用它时 向我的对象添加一个计算属性 已完成订单数
  • 将 ncurses 窗口保持在前台

    我的应用程序正在使用 ncurses 并且有几个正在不断更新的窗口 在该应用程序中 当用户点击 q 时 我有一个充当 消息框 例如对话框 的窗口 询问他们是否要关闭 在其他窗口更新之前 这一切正常 此时 其他窗口将绘制在对话框上 使其 部分
  • 如何使用 id 获取 JavaFx 中的元素?

    我是 FXML 新手 我正在尝试使用以下命令为所有按钮单击创建一个处理程序switch 然而 为了做到这一点 我需要使用 和 id 获取元素 我已经尝试了以下方法 但由于某种原因 也许是因为我是在控制器类中而不是在主类中执行此操作 我收到了
  • DataOutputStream#writeBytes(String) 与 BufferedWriter#write(String)

    我想为我的报告创建一个 HTML 文件 报告中的内容可以通过使用创建BufferedWriter write String File f new File source htm BufferedWriter bw new BufferedW
  • 计算 Matplotlib 文本旋转[重复]

    这个问题在这里已经有答案了 我试图弄清楚如何在 matplotlib 中旋转文本以与图中的曲线对齐 但我还没有弄清楚什么转换可以为旋转文本提供正确的坐标系以匹配数据坐标中的特定斜率 这是绘制一条线并尝试沿其对齐一些文本的最小示例 Make
  • 如何设置AlertDialog中正负按钮的顺序?

    为什么我要这样做完全是另一个讨论 但我需要找出使我的所有警报对话框在右侧都有肯定按钮的最佳方法 请注意 在 3 0 及更低版本中 按钮通常显示为 确定 取消 而在 4 0 及更高版本中 按钮通常显示为 取消 确定 我想强制我的应用程序以最简
  • Xcode:在每次构建之前运行直接修改源代码的脚本

    我做了什么 我有一个脚本 阅读一些配置文件来生成源代码片段 找到相关的 Objective C 源文件并 将源代码的某些部分替换为步骤 1 中生成的代码 和一个 Makefile 它有一个特殊的时间戳文件作为 make 目标 配置文件作为目
  • Bash:循环直到命令退出状态等于 0

    我在本地计算机上安装了 netcat 并在端口 25565 上运行了一个服务 使用以下命令 nc 127 0 0 1 25565 lt dev null echo Netcat 检查端口是否打开 如果打开则返回 0 如果关闭则返回 1 我正
  • 如何理解 JavaScript 中的 isEqualNode()

    我试图理解 JavaScript 中的 isEqualNode 方法 显然根据 W3 学校提供的定义是这样的 isEqualNode 方法检查两个节点是否相等 如果满足以下所有条件 则两个节点相等 它们具有相同的节点类型 它们具有相同的no
  • HTML5 Websockets 可以在不使用服务器的情况下直接连接 2 个客户端(浏览器)吗? (P2P)[重复]

    这个问题在这里已经有答案了 使用 HTML5 Websockets 我可以直接在 2 个客户端 浏览器 之间打开套接字 假设我知道它们的 IP 地址并且不存在 NAT 遍历问题 我想将一些数据直接从一个浏览器发送到另一个浏览器 本质上是创建
  • 扩展内置集合,内置方法的问题

    我是 Scala 新手 所以请原谅我 如果这是一个愚蠢的问题 但这里是 想象一下 我希望创建一个包含附加方法的扩展 Map 类型 我可以看到几种方法来做到这一点 第一个是组合 class Path V val m Map V Int Def
  • Python multiprocessing.Pool:AttributeError

    我在一个类中有一个方法 需要在循环中完成大量工作 我想将工作分散到我的所有核心上 我写了下面的代码 如果我使用正常的话 它可以工作map 但与pool map 返回错误 import multiprocessing pool multipr
  • IPython笔记本:如何重新加载特定Python文件中的所有模块?

    我在一个文件中定义了许多模块 并添加from myFile import 到我的 ipython 笔记本的第一行 以便我可以将它用作该笔记本中其他部分的依赖项 目前我的工作流程是 modify myFile 重启Ipython内核 重新运行
  • OWL 限制 - 定义仅包含具有特定属性值的属性的类

    我目前正在玩 OWL 尤其是有限制的情况 我正在尝试创建一个执行以下操作的查询 假设我有一个类 Cinema 它具有属性 movies 包含 Movie 类型的对象 Movie 类包含一个名为 genre 的属性 现在我想创建一个 Acti
  • 如何自动设置跨度计数和图标大小

    我正在使用回收器视图和卡片视图来显示应用程序中的图标 我无法弄清楚如何调整应用程序图标的大小并根据屏幕尺寸自动增加 减少跨度计数 这是我正在做的显示它的操作 并且花费计数固定为 3 RecyclerView mrv RecyclerView