【发布时间】:2018-04-03 12:37:44
【问题描述】:
我目前在改变尺寸方面遇到了麻烦。
我已经使用 dp 对我的 xml 文件进行了编码,但是当我更改设备屏幕大小时,布局会发生变化。
例如,当我进入设置 - 显示 - 屏幕缩放和字体并将屏幕缩放从中到大设置时,我的布局中的某些元素(例如图像视图或按钮)会增长并超出屏幕。
由于我使用的是包含 LinearLayouts 和 FrameLayouts 的复杂布局,我不清楚我应该如何使这个布局在任何其他设备或屏幕尺寸下看起来都正常。似乎当我更改屏幕缩放设置时,dp 的值会发生变化。
有没有办法避免这个问题,或者以编程方式将屏幕缩放设置设置为中等?
这是我的代码:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:layout_gravity="center"
android:layout_marginTop="65dp">
<android.support.constraint.ConstraintLayout
android:id="@+id/frameLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="95dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.3">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/home_map" />
<Button
android:id="@+id/pick1"
android:layout_width="34dp"
android:layout_height="56dp"
android:background="@drawable/top_deselected"
app:layout_constraintBottom_toBottomOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="@+id/imageView"
app:layout_constraintHorizontal_bias="0.17"
app:layout_constraintStart_toStartOf="@+id/imageView"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.18" />
<Button
android:id="@+id/pick2"
android:layout_width="34dp"
android:layout_height="56dp"
android:background="@drawable/jungle_deselected"
app:layout_constraintBottom_toBottomOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="@+id/imageView"
app:layout_constraintHorizontal_bias="0.28"
app:layout_constraintStart_toStartOf="@+id/imageView"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.367" />
<Button
android:id="@+id/pick3"
android:layout_width="34dp"
android:layout_height="56dp"
android:background="@drawable/mid_deselected"
app:layout_constraintBottom_toBottomOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="@+id/imageView"
app:layout_constraintHorizontal_bias="0.424"
app:layout_constraintStart_toStartOf="@+id/imageView"
app:layout_constraintTop_toTopOf="@+id/imageView"
app:layout_constraintVertical_bias="0.43" />
<Button
android:id="@+id/pick4"
android:layout_width="34dp"
android:layout_height="56dp"
android:background="@drawable/support_deselected"
app:layout_constraintBottom_toBottomOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.615"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/imageView"
app:layout_constraintVertical_bias="0.71" />
<Button
android:id="@+id/pick5"
android:layout_width="34dp"
android:layout_height="56dp"
android:background="@drawable/adc_deselected"
app:layout_constraintBottom_toBottomOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.733"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/imageView"
app:layout_constraintVertical_bias="0.71" />
</android.support.constraint.ConstraintLayout>
<Button
android:layout_width="335dp"
android:layout_height="42.5dp"
android:layout_marginBottom="5.5dp"
android:background="@drawable/home_mode"
android:id="@+id/home_mode"/>
<Button
android:layout_width="335dp"
android:layout_height="42.5dp"
android:background="@drawable/home_match"
android:id="@+id/home_match"/>
</LinearLayout>
约束布局曾经是框架布局,但我现在是在尝试约束布局。
【问题讨论】:
-
尝试使用 sp 而不是 dp。 read this link
-
使用 sp 似乎并没有解决问题……它实际上改变了布局大小。
-
你能把布局文件贴出来让我们看看吗?一般来说,使用“sp”作为字体大小,使用“dp”作为其他尺寸应该可以正常工作。
-
我将代码添加到我的问题中。谢谢。