Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Dp单元不会在不同屏幕中缩放布局_Android_Xml - Fatal编程技术网

Android Dp单元不会在不同屏幕中缩放布局

Android Dp单元不会在不同屏幕中缩放布局,android,xml,Android,Xml,在阅读了本文()之后,我使用xml文件中的dp单元开发了一个完整的应用程序。但是,当我在不同的屏幕上测试应用程序时,布局要么太大,要么太小 我以为dp小组会帮我解决这个问题。为什么没有呢?我不想使用权重属性,因为一切都已完成 一个xml布局: 我能做什么?谢谢 对尺寸使用dp并不是解决此问题的真正一刀切的解决方案 请注意,如果可能,您应该使用布局权重,通常一个dp值适用于所有屏幕尺寸。但是,有时您会遇到导致问题的边缘情况,您只需要做一些事情使其正常工作(例如,我必须使用此技术在表格布局中

在阅读了本文()之后,我使用xml文件中的dp单元开发了一个完整的应用程序。但是,当我在不同的屏幕上测试应用程序时,布局要么太大,要么太小

我以为dp小组会帮我解决这个问题。为什么没有呢?我不想使用权重属性,因为一切都已完成

一个xml布局:



我能做什么?谢谢

对尺寸使用dp并不是解决此问题的真正一刀切的解决方案

请注意,如果可能,您应该使用布局权重,通常一个dp值适用于所有屏幕尺寸。但是,有时您会遇到导致问题的边缘情况,您只需要做一些事情使其正常工作(例如,我必须使用此技术在表格布局中的选项卡上正确定位徽章,以适应所有屏幕大小)

我要做的是为每个支持的屏幕大小放置一个dimens.xml文件:

  • res/values small/dimens.xml

  • res/values normal/dimens.xml

  • res/values large/dimens.xml

  • res/values xlarge/dimens.xml

如果需要的话,您也可以使用其他限定符来定位平板电脑

然后,为每个文件中的每个屏幕大小限定符指定每个维度(请注意,这只需要对在非常大或非常小的屏幕上导致问题的维度值执行)

例如,在res/values large/dimens.xml中,您可能有以下内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <dimen name="image_view_height">140dp</dimen>

</resources>

请提供一个演示您的问题的示例。在本例中,它将包括布局文件、维度资源文件(如果您正在使用这些文件)以及显示结果的屏幕截图。1。你应该提供(其中一个)有问题的布局,也许还有你问题的屏幕截图。2.
dp
用于确保不同屏幕上的大小相同,它不会“缩放”布局本身。它确保相同的大小?所以这不是我需要的!我该如何编写能够自动缩放的代码呢?我只使用了一个图像,所以我认为不需要将多个图像作为可绘制资源。如何缩放简单的文本视图和按钮?文本大小应使用“sp”而不是“dp”。阅读-这确实有效!所以,考虑到我需要再次做每件事,你认为最好按照你刚才说的做还是使用权重属性?谢谢@JoãoMarcos我想说的是,使用权重属性,这样你就可以轻松地使用它,当你绝对必须使用dp时,使用上面的方法。这似乎是错误的。
dp
units的全部要点是,您不关心屏幕密度,那么为什么要根据屏幕密度限定符创建其他尺寸?对于屏幕大小限定符(例如,
-sw600
)使用不同的尺寸更有意义。平板电脑的屏幕尺寸更大,但屏幕密度更小,所以我会使用
dp
单位,但当它出现在平板电脑屏幕上时,可能会指定一个更大的尺寸。这是一个很好的观点。我想这是一种“快速而肮脏”的方法,你是对的,为不同的密度指定不同的dp实际上没有意义。尽管这是一个丑陋的解决方案,但对我来说,它确实解决了这个问题!另外,我认为你是对的,定义屏幕大小限定符会更有意义,只是编辑了答案。我尝试使用权重属性,但不起作用,因为Android无法识别嵌套布局中的权重。但这正是我需要的:嵌套布局。这似乎是每个开发人员都必须克服的一个关键问题:不同屏幕的缩放。为什么我找不到有效的解决方案?
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <dimen name="image_view_height">140dp</dimen>

</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <dimen name="image_view_height">96dp</dimen>

</resources>
<ImageView
    android:layout_width="match_parent"
    android:layout_height="@dimen/image_view_height"
    android:src="@drawable/logo3"
    android:scaleType="centerCrop"

    />