- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我会逐步分解我的问题,以便更容易理解/回答。
第 1 步:根据 Android Developer Guide ,“与密度无关的像素相当于 160 dpi 屏幕上的一个物理像素”。这意味着在具有 233 dpi 的 Galaxy S 上,1 dp 等于 1.46 个物理像素 (233/160)。
第 2 步:鉴于 Galaxy S 的分辨率为 480x800,这意味着其屏幕的高度为 548dp(800 个物理像素除以 1.46)。因此,如果我将我创建的 LinearLayout 的高度设置为 274dp,它将恰好占据屏幕的一半。我测试过,它有效。
第 3 步:Galaxy S3 具有 306 dpi,因此在该设备上 1dp = 1.9125 物理像素 (306/160)。由于它的分辨率为 720x1280,因此其屏幕高度为 670dp (1280/1.9125)。同样,如果我制作一个大约 335 的 LinearLayout,它将占用一半的屏幕。已经过测试和工作。
问题:如何使用与密度无关的像素制作一个在 Galaxy S 和 Galaxy S3 上都占据一半屏幕的 LinearLayout?因为如果我使用 274dp,它只会在 S 上占据一半的屏幕,反之亦然。还是我的计算有任何错误?
更新:考虑到这一点,我想到了以下想法:使用“ScreenMetrics”获取设备的 dpi 和屏幕分辨率。然后让我的应用程序以 DP 为单位计算屏幕的总尺寸(分辨率除以(设备的 dpi/160),然后将布局的高度动态设置为它的一半。很多工作,但是我猜这是执行此操作的方法?
最佳答案
使用 LinearLayout
包含一个空的 View
,然后是你的真实内容,然后是另一个空的 View
.将空 View 设置为 android:layout_height="0dp" android:layout_weight="1"
和你的内容到android:layout_height="0dp" android:layout_weight="2"
.现在封闭 LinearLayout
将为您的内容提供一半的高度,位于屏幕中央,另一半为空 View (在它们之间平分)。如果您只想将内容显示在屏幕的上半部分(或下半部分)而不是中心,请删除其中一个空 View 并使用 android:layout_weight="1"
.
如果您尝试使事物相对于屏幕适合,请始终使用这样的结构。你应该只使用 dp
测量较小的固定尺寸,例如边距或图标高度。
关于Android:可以在布局上使用 DP 并使其在不同设备上看起来相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979388/
我正在尝试执行 vagrant up 但一直遇到此错误: ==> default: IOError: [Errno 13] Permission denied: '/usr/local/lib/pyt
我在容器 div 中有一系列动态创建的不同高度的 div。 Varying text... Varying text... Varying text... Varying text.
通过 cygwin 运行 vagrant up 时遇到以下错误。 stderr: /bin/bash: /home/vagrant/.ansible/tmp/ansible-tmp-14872260
今天要向小伙伴们介绍的是一个能够快速地把数据制作成可视化、交互页面的 Python 框架:Streamlit,分分钟让你的数据动起来! 犹记得我在做机器学习和数据分析方面的毕设时,
我是 vagrant 的新手,正在尝试将第二个磁盘添加到我正在用 vagrant 制作的虚拟机中。 我想出了如何在第一次启动虚拟机时连接磁盘,但是当我关闭机器时 然后再次备份(使用 'vagrant
我是一名优秀的程序员,十分优秀!