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