我正在尝试根据尺寸计算子布局/视图的宽度和高度 包含它们的ViewGroup。
我试图考虑每个孩子的保证金价值,但似乎无法做到这一点。
我尝试过在阳光下进行的每次转换(dip,sp,px,in,mm),但仍然得出相同的结论,即边缘值转换为比其他任何一个更小的像素值尺寸值 (即宽度和高度)。
我需要这个转换因子。我已经尝试了很多东西来计算它(Context.Resources.DisplayMetrics - Density,DensityDpi,ScaledDensity),但还没有成功。
我不相信这个转换因子可以从运行时可用的任何值中获取或派生, 所以想知道是否有人知道它是什么(或者可能在哪里找到或计算它)。
为了给出一些上下文,我正在实现一个自定义日历,其中包含一个5x7的子布局网格(LinearLists),其中每个孩子都有边缘围绕它们。
最外侧视图是RelativeLayout,其宽度和高度分别为W和H,边距宽度为M.因此,您认为
CELL_WIDTH = W/7 - M*7
CELL_HEIGHT = H/5 - M*5
然而,边距宽度因子M * 7和M * 5最终太大,导致整体网格小于父视图(这是一个问题,b / c我需要填充它)。 / p>
我在这里和其他地方的帖子尝试了大量不同的转换技术但没有成功。我确信android有一些转换因子用于内部存储边距值(我假设是以像素为单位)。这是我追求的转换因子(除非当然有人知道我正在尝试执行计算的更好/更正确的方法)。
以下是我尝试过的链接,我甚至将其中一个Java解决方案转换为C#,目前正在使用它(虽然它没有为我解决这个特殊问题,但它有助于揭示它,并在其他地方帮助):
How to parse a dimension string and convert it to a dimension value
答案 0 :(得分:0)
天啊,我是个白痴!
我已经工作了很长时间,以至于我甚至没有把这个等式视为有缺陷。
对于每个单元格大小,我应该只削掉1个边距宽度/高度,而不是所有这些,这是当前等式所做的。
所以,正确的方程是:
CELL_WIDTH = W/7 - M
CELL_HEIGHT = H/5 - M
唉,我觉得很傻。