多个设备上的布局问题

尤其

众所周知,我们可以通过使用dp中的size为所有类型的设备创建单个布局。我用dp创建了一个xml,但是在其他所有设备(例如7',10'选项卡,5.4,5.1 3.7等)上显示的内容都不相同。

我已将文件放置在“布局”文件夹中,现在要支持所有这些设备,我必须为所有设备创建不同的布局文件夹,并且即使我创建了hdpi,xhdpi等也很难维护,但仍然存在很多布局需要创建。请在下面的xml中找到:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
  android:id="@+id/ans4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_orange"
tools:context="com.kids.kidsmath.MainActivity"
tools:ignore="MergeRootFrame" >

<Button
    android:id="@+id/mathCalculation"
    android:layout_width="250dp"
    android:layout_height="40dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="104dp"
    android:background="@drawable/curve_shape"
    android:onClick="openMa"
    android:text="Play "
    android:textColor="#000000"
    android:textSize="20sp"
    android:textStyle="bold"
    android:typeface="sans" />

<Button
    android:id="@+id/learnCounting"
    android:layout_width="250dp"
    android:layout_height="40dp"
    android:layout_alignLeft="@+id/mathCalculation"
    android:layout_alignRight="@+id/mathCalculation"
    android:layout_below="@+id/mathCalculation"
    android:layout_marginTop="46dp"
    android:background="@drawable/curve_shape"
    android:onClick="openL"
    android:text="Lg"
    android:textColor="#000000"
    android:textSize="20sp"
    android:textStyle="bold"
    android:typeface="sans" />

<Button
    android:id="@+id/greatersmaller"
    android:layout_width="250dp"
    android:layout_height="40dp"
    android:layout_alignLeft="@+id/learnCounting"
    android:layout_alignRight="@+id/learnCounting"
    android:layout_below="@+id/learnCounting"
    android:layout_marginTop="40dp"
    android:background="@drawable/curve_shape"
    android:onClick="openS"
    android:text="Gr"
    android:textColor="#000000"
    android:textSize="20sp"
    android:textStyle="bold"
    android:typeface="sans" />


</RelativeLayout>

如果我在此xml中做错了,请帮助我。还需要为所有人定义不同的xml吗?

撤销

我猜有一点误解是密度无关像素的真正含义。因此,我将尝试以一种非常规的方式进行解释:

让我们以您的一个按钮为例。您已定义android:layout_width="250dp"因此,无论分辨率如何,您的按钮在每5英寸设备上的宽度都将相同。相对于实际可用宽度,在7英寸或10英寸上按钮的宽度将不会相同。为了使事情更加清晰这是Nexus 5、7和10的dp分辨率与px分辨率的比较。

Nexus 5   1920x1080px   640x360dp
Nexus 7   1920x1200px   960x600dp
Nexus 10  2560x1600px   1280x800dp

注意:如您所见,N5和N7的分辨率几乎相同,尽管dp中的高度仍然不同。(640dp vs 960dp)那是因为密度差(xxhdpi vs xhdpi)

那么,如何为各种设备优化布局?好了,正如您已经说过的,很难为所有设备维护一个布局文件夹,特别是如果您以后要更改布局中的某些内容时。这就是为什么您应该使用尺寸文件(关联)

我将尝试使用textSize对其进行解释假设我们将textSize定义为18sp这在智能手机上相当大。在7英寸的平板电脑上还是可以的,但在10英寸的平板电脑上很小。因此,我们没有定义所有三个设备的布局文件,而是定义了尺寸参考。首先,您需要dimens.xml在值文件夹中创建一个,然后再定义维度,例如:

<dimen name="my_text_size">18sp</dimen>

在布局文件中,您可以这样引用size-value:

android:textSize="@dimension/my_text_size"

为了使textSize适应不同的设备,您创建了一个values-sw600dp(由Nexus 7使用)和一个values-sw720dp(由Nexus 10使用)文件夹。然后将复制dimens.xml到这两个文件夹,并将值更改为例如22sp(@ sw600dp)和26sp(@ 720dp)。现在,您的布局已经针对智能手机和平板电脑进行了优化,而无需创建多个布局文件。

注意:如果要重新排列视图,则只需要多个布局文件

以下android-developer页面也应该会有所帮助:支持多屏幕设计多屏幕

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多个设备上的布局问题

来自分类Dev

JPanel上的布局问题

来自分类Dev

在多个设备上训练

来自分类Dev

AlertDialog在某些设备上的布局已损坏

来自分类Dev

角型小型设备上的布局损坏

来自分类Dev

在移动设备上查看时,布局变形

来自分类Dev

AlertDialog在某些设备上的布局已损坏

来自分类Dev

在移动设备上查看固定的页面布局

来自分类Dev

Android Studio布局在不同设备上的距离

来自分类Dev

自动布局视图在较小的设备上重叠

来自分类Dev

约束布局在不同设备上的表现不同

来自分类Dev

移动设备上的wordpress问题

来自分类Dev

iOS设备上的性能问题

来自分类Dev

同步多个设备上的通知

来自分类Dev

ios 设备中的 Flutter 布局问题,iOS 设备中的布局混乱

来自分类Dev

设备方向更改时自动布局约束问题

来自分类Dev

基本表布局背景或容器问题主要在Apple设备的

来自分类Dev

NSLayoutConstraint问题在不同的设备上

来自分类Dev

android设备上的图像旋转问题

来自分类Dev

在dockerized Syncthing上本地发现设备的问题

来自分类Dev

NSLayoutConstraint问题在不同的设备上

来自分类Dev

Android 设备上的 Unity 阴影问题

来自分类Dev

问题:设备上没有剩余空间

来自分类Dev

调查 IOS 设备上的 html/js 问题

来自分类Dev

移动设备上的粘性滚动问题

来自分类Dev

在 iOS 设备上启动 GluonVM [问题]

来自分类Dev

为所有Android设备上的布局分配px值

来自分类Dev

ImageView在布局中显示,但不在实际设备上显示

来自分类Dev

移动设备上的HTML布局无法正常工作