我知道互联网对DPI px英寸等问题感到不知所措。 但经过几个小时的谷歌搜索,我的情况似乎没有发生在其他任何人身上!
我有两个设备自定义构建与android工作室,都是mdpi。 但是一个设备是3.65英寸而另一个设备是10.1英寸。
我创建了一个文件夹,其中2张图像为250x125,dpi设置为160 dpi
通常情况下,我会用dp单位而不是像素在我的XML中声明我的2张图片......我想在两个屏幕上的结果应该是相同的吗?
看起来图像保持相同的尺寸并且看不到@设备的数量
所以要明确: 我需要在我的资源或代码中更改哪些内容,以便我的布局在不同英制尺寸下的尺寸相同?
如何制作它,即使在3.65英寸的屏幕上,按钮也会缩放到与10.1相同的比例。不是英寸......不是像素......比例......
这是我的XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="center">
<Button
android:id="@+id/buttonEnglish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/english"
android:layout_marginBottom="5sp"
android:layout_marginLeft="5sp"
android:layout_marginRight="2sp"
android:layout_marginTop="0sp" />
<Button
android:id="@+id/buttonNederlands"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/nederlands"
android:layout_marginBottom="5sp"
android:layout_marginLeft="20sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
</LinearLayout>
我绝望了...... Thanx提前
答案 0 :(得分:3)
无需设计两个xml布局。
您可以根据设备使用Dimension作为边距和填充。
您正在为保证金提供静态值。
在每个设备的值文件夹中使用dimen.xml。
您的layout.xml中的以下代码将适合您。
valeur = xpathApply(rootNode, "//prix", xmlGetAttr, "valeur")
valeur <- data.frame(matrix(unlist(valeur), byrow=T),stringsAsFactors=FALSE)
dimen.xml的值文件夹名称:
值-MDPI
值,华电国际
价值观xhdpi
价值观xxhdpi
值-sw600dp
在每个值文件夹中创建dimen.xml。
并且在dimen.xml中你必须在所有值文件夹中定义margin的值,但该属性的值根据设备大小而不同,如下所示:
值-MDPI
android:layout_marginLeft="@dimen/margin_button"
值-HDPI
<dimen name="margin_button">20dp</dimen>
在所有值文件夹中都是明智的。
答案 1 :(得分:3)
这可能有助于解释您所面临的问题......
你的图像是250x125 - 宽250像素,高125像素。
您指定了160 dpi - 这意味着1英寸= 160像素。
因此,两个屏幕都按照您的要求进行操作,并在1.5625英寸处显示250像素。在大屏幕上,它看起来“按比例”正确。在3.65英寸的屏幕上,按钮占据屏幕的一半以上 - 就像你要求它一样。
如果您希望较小的屏幕看起来像较大的屏幕,那么您有三个选项:
调整图像大小并提供2个图像资源(或更多用于更多种类的屏幕)。这就是为什么你可以拥有mdpi,hdpi,xhdpi等资源文件夹的原因。你可以调整图像中的像素以适应屏幕尺寸。
您使用“加权”LinearLayout
根据可用的屏幕空间调整所提供空间的大小。对于这种类型的布局,您不必担心性能。
根据屏幕尺寸对图像进行运行时缩放 - 使用DisplayMetrics
获取屏幕的大小和密度,并调整图像以适合屏幕。
最后一个选项在很多方面都是最灵活的,因为如果您最终得到的屏幕非常大或非常小,您可以进行调整以执行操作,例如将按钮或文本移动到屏幕上的其他位置(高于或低于其他内容)。但是对于你的具体问题,任何一个都足够了。
答案 2 :(得分:0)