保证空间的Android DP限制

时间:2016-04-04 12:21:41

标签: android android-studio screen-density

很抱歉,如果之前已经提出过这个问题,那么很难找到搜索但我们去的地方:

在Android Studio中使用DP像素时,有时会发现与预览相比,元素在真实设备或模拟器上变得更宽或更短。考虑到不同的密度,这是有道理的。

我想知道的是,如果在高度和/或宽度方面存在一定的黄金限制,这将保证如果您将所有内容保持在此限制范围内,屏幕上不会有任何内容,无论设备的屏幕密度如何。

例如,如果我想制作一个棋盘,我希望它尽可能宽,但要始终适合任何屏幕。这里有黄金限制吗?

1 个答案:

答案 0 :(得分:-1)

不要使用绝对值,因为你永远不知道屏幕有多大。甚至还有应用程序可以选择向应用程序报告的dp 让我们以你的榜样为例。您的棋盘可能有Cell视图。 然后,您可以在LinearLayout中对齐它们(使用View代替Cell):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="8">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:weightSum="8">

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@android:color/white" />

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@android:color/black" />

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@android:color/white" />

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@android:color/black" />

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@android:color/white" />

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@android:color/black" />

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@android:color/white" />

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@android:color/black" />

    </LinearLayout>

    ...

这将得到以下结果(在上面的示例中,我只显示第一行):

Sample image

如您所见,屏幕使用完美(因为在根视图中使用match_parent),而不使用任何绝对值。您当然可以根据您的具体需求对其进行更改,因为您可能希望在那里添加更多视图。

注意:不要在现实中这样做。我在示例中使用嵌套权重,这对性能不利。这只是为了让您了解如何做到这一点。