响应式布局设计

时间:2018-06-06 12:39:37

标签: android android-layout responsive-design android-constraintlayout

我完成了我的小项目的java代码和功能。最后,我检查支持大量的Android设备根据他们的大小。但它失败了。

在研究时,我理解我应该使用sp用于textizes,dp用于所有其他参数。布局-xml-通过spdp存在。但它不像我预期的那样。

我创建了一个新项目。

我的xml; (在ConstraintLayout

 <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="72dp"
    android:text="Hello World!"
    android:textSize="105sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.502"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="144dp"
    android:text="Check"
    android:textSize="160sp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView" />

适用于1080 x 1920 xxhdpi; Click here to see layout

1440 x 2960 hdpi(samsung galaxy s8)Click here to see layout

在星系s8中,元素非常小而且存在问题。我想我误解了一个基本概念。你能清理一下吗?

2 个答案:

答案 0 :(得分:0)

你在这里遗漏了一些东西:当你设置android:layout_marginTop="72dp"时,72dp将在两个布局文件中以相同的方式解释。

解决方案是直接在xml文件中使用维度而不是值。

在这里观看:Node.JS and Apache

希望它有所帮助。

答案 1 :(得分:0)

您必须小心屏幕尺寸和像素密度。

处理所有屏幕尺寸的最佳方法是在ConstraintLayout中使用weightSumLinearLayout(但会降低UI性能)。这将有助于您在所有屏幕上保持元素的相同位置。

像素密度难以治疗。例如,对于文本大小,我发现使用不同的dimens文件很有用。 右键单击values文件夹,然后点击Values resource file,输入名称dimens,然后从左侧选择Density。在那里你可以选择你喜欢的密度。在您创建的每个文件中,您可以使用相同的名称创建文本大小,如下所示:

<dimen name="normal_text_size">15sp</dimen>

每次设置文字大小都会使用此标记。这种方式取决于手机密度,将自动选择适当的文字大小。

您可以阅读ConstraintLayout here

了解屏幕尺寸here

关于像素密度here