如何以 dp 值设置 Layoutparams 高度/宽度?

2024-06-28

我尝试在按钮中手动设置高度/宽度,但它不起作用。然后实现Layoutparams。但尺寸显示很小并且没有获得所需的 dp 值。

XML

 <Button
    android:id="@+id/itemButton"
    android:layout_width="88dp"
    android:layout_height="88dp"
    android:layout_marginRight="5dp"
    android:layout_marginBottom="5dp"
    android:background="#5e5789"
    android:gravity="bottom"
    android:padding="10dp"
    android:text=""
    android:textColor="#FFF"
    android:textSize="10sp" />

构造函数:

  public Item (int id, String name, String backgroundColor, String textColor, int width, int height){
    this.id = id;
    this.name = name;
    this.backgroundColor = backgroundColor;
    this.textColor = textColor;
    this.width = width;
    this.height = height;

}

Adapter:

@Override public void onBindViewHolder(final ViewHolder holder, int position) {
    final Item item = items.get(position);
    holder.itemView.setTag(item);
    holder.itemButton.setText(item.getName());
    holder.itemButton.setTextColor(Color.parseColor(item.getTextColor()));
    holder.itemButton.setBackgroundColor(Color.parseColor(item.getBackgroundColor()));
    ViewGroup.LayoutParams params = holder.itemButton.getLayoutParams();
    params.width = item.getWidth();
    params.height = item.getHeight();
    holder.itemButton.setLayoutParams(params);

}

当您以编程方式指定值时LayoutParams,这些值预计为像素。

要在像素和 dp 之间进行转换,您必须乘以当前密度因子。该值位于DisplayMetrics,您可以从Context:

float pixels =  dp * context.getResources().getDisplayMetrics().density;

所以在你的情况下你可以这样做:

.
.
float factor = holder.itemView.getContext().getResources().getDisplayMetrics().density;
params.width = (int)(item.getWidth() * factor);
params.height = (int)(item.getHeight() * factor);
.
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以 dp 值设置 Layoutparams 高度/宽度? 的相关文章

随机推荐

  • 如何在 Flex 中使用 FTP?

    我是 Flex 环境的新手 特别是 flex3 我已经研究了1个星期了 我有一个项目 我需要FTP来上传和下载mp3和图片文件 最好的开始方式是什么 如果您的意思是在 Flex 中创建 FTP 客户端 那么它已经完成了 FlexFTP ht
  • 如何为二维数组动态分配连续的内存块

    如果我像这样分配一个二维数组整数a N N 它将分配一个连续的内存块 但如果我尝试像这样动态地执行此操作 int a malloc rows sizeof int for int i 0 i lt rows i a i malloc col
  • 拖动时如何改变光标?材质 CDK 拖放

    使用 Material CDK 库中的拖放行为 我尝试在拖动cdkDrag元素 例如 在这个堆栈闪电战 https stackblitz com edit angular b8kjj3光标是grab悬停时 我想把它改为grabbing拖动时
  • 在mysql中使用smallint数据类型而不是int真的可以节省内存吗?

    在 mysql 表中使用 Smallint 数据类型而不是常规 int 是否真的可以提高内存使用率 无论如何 硬件不会为所有数据分配完整的 64 位字大小吗 如果它不分配完整的字 那么我们是否会看到由于必须从内存中分配的 64 位字中解析出
  • Python 和 SQLite:插入表

    具有以下表架构 tablename name varchar 100 age int sex char 1 有一个list有 3 行 每行代表一个表行 row1 laks 444 M row2 kam 445 M row3 kam 445
  • 微服务数据复制模式

    在微服务架构中 我们通常有两种方式让2个微服务进行通信 假设服务 A 需要从服务 B 获取信息 第一个选项是远程调用 通常通过 HTTPS 同步 因此服务 A 查询服务 B 托管的 API 第二种选择是采用事件驱动架构 其中服务 B 的状态
  • Eval 不适用于未展开的宏引用

    在 Common Lisp 中我可以这样做 src gt defmacro 宏 hello 你好 eval 宏 你好 没问题 在 Clojure 中 defmacro 宏 你好 你好 eval 宏 你好 给我一个错误 我做错了什么吗 Clo
  • 图标到图像 - 透明度问题

    我正在尝试在 Richtextbox 中构建类似文件列表的树视图 它应该看起来像一个资源管理器树视图 我的代码能够调整图标大小 但缺少透明度 浅灰色背景而不是透明度 我需要在这里改变什么 是不是图片格式不对 有没有更好的方法将图像添加到 R
  • 运行此 AVD 需要 Intel HAXM,但我已经安装了它

    我一直在网上寻找这个问题 似乎没有人遇到和我一样的问题 我刚刚下载了 Android Studio 来开始学习 Kotlin 在遵循 Google 的教程步骤后 我收到以下消息 在此输入图像描述 https i stack imgur co
  • Flash 和 HTTP 状态代码 207

    让 flash 识别有效的 HTTP 响应代码 207 时遇到一些问题 奇怪的是 到目前为止 这似乎只发生在 FireFox 中 在 Chrome 中工作得很好 这是生成以下错误的代码 它似乎在 FlashBug 中返回 0 的 HTTP
  • 如何从任何页面的 javascript 访问 google chrome 扩展

    我试图弄清楚如何从普通网页调用我的分机 我找到的所有文档似乎都是用于扩展之间或内容脚本和扩展之间的通信 非常感谢任何指点 我认为您应该制作一个内容脚本 将一个对象注入到调用您的扩展的页面中 创建一个内容脚本 将 YourExt js 注入每
  • ng-grid cellTemplate 不适用于包含的 CUSTOM_FILTERS

    当在列定义中包含 cellTemplate 时 如果该 cellTemplate 包含 CUSTOM FILTERS 则会导致 Angular 呕吐 错误 语法错误 标记 CUSTOM FILTERS 是从 CUSTOM FILTERS 开
  • Matlab交换

    我正在尝试创建一个函数 将矩阵中的特定数字与同一矩阵中的特定数字交换 例如 如果我从 A 1 2 3 1 3 2 开始 我希望能够创建 B 2 1 3 2 3 1 只需告诉 matlab 将 1 与 2 交换即可 任何意见 将不胜感激 谢谢
  • Air 2 ServerSocket跨域问题

    我希望通过 ServerSocket 类创建一个 Air 2 服务器 您将在下面的代码中找到有关它的示例 限制条件 服务器必须在空中 客户端必须通过网络浏览器显示 客户端使用Web浏览器显示 因此当客户端想要与Air服务器建立连接时 Fla
  • backbone.js 集合未正确删除视图中的项目

    在视图中 我在从模型内的集合中删除项目时遇到一些问题 基本上模型 集合结构如下 基本上 当我尝试从子项目视图中的子项目集合中删除项目时 它实际上会从集合中删除正确的项目 然而 当我坚持主模型时 该项目似乎仍在集合中 这就是我的观点的结构 主
  • 尽管已成功,但由于“实例不可用”,GAE 推迟了任务重试

    在我们的 GAE 应用程序中 我们偶尔会在延迟任务中看到 TombstonedTaskError 错误 因为命名任务使用相同的名称多次提交 尽管延迟任务的第一次执行成功 但 GAE 似乎偶尔会自动重新提交这些任务 一个例子可以在这个日志截图
  • 重写的方法仍然被调用

    我正在使用一个正在实现的库belongs to数据库中两个条目之间的关联 由于这不是我需要的行为 我想通过重写此方法prepend 但 pry 告诉我 原来的方法仍然被调用 我仔细检查了一下 我使用的是 ruby 2 0 前置的代码 mod
  • 结构化流式自定义重复数据删除

    我有一个从 kafka 进入 dataFrame 的流数据 我想根据 Id 删除重复项并根据时间戳保留最新记录 样本数据是这样的 Id Name count timestamp 1 Vikas 20 2018 09 19T10 10 10
  • 在 Rails 中捕获 UTM 参数

    我正在尝试捕获 URL 中的 UTM 参数 以将源 营销活动等添加到用户帐户 可悲的是 我似乎不知道如何捕获这些参数 据我所知 我正在关注博客文章http www matthuggins com articles tracking new
  • 如何以 dp 值设置 Layoutparams 高度/宽度?

    我尝试在按钮中手动设置高度 宽度 但它不起作用 然后实现Layoutparams 但尺寸显示很小并且没有获得所需的 dp 值 XML