Android布局在设备上不一致,而不是使用dp

时间:2016-04-05 16:22:05

标签: android android-layout dpi mobile-devices

Screenshot of first image Screenshot of other phone我有一个LinearLayout,RelativeLayout,LinearLayout和一个ImageView。这基本上是我的应用程序的登陆页面,尽管使用dp我的输出在所有设备上都不相同。有两种不同手机的屏幕截图。提前致谢

<LinearLayout
        android:id="@+id/lb_LinearLayout"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <RelativeLayout
        android:id="@+id/lb_Relative_HomeScreen"
        android:layout_width="match_parent"
        android:layout_height="450dp">
            <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="350dp">
           ``   <ImageView
                android:id="@+id/lb_Background_Image"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="fitXY" />
            </LinearLayout>
            <TextView
                android:id="@+id/lb_Welcome"
                android:text="@string/welcome"
                android:gravity="start"
                style="@style/Heading2.yellow"
                android:layout_width="match_parent"
                android:layout_height="30dp"
                android:layout_gravity="start|center_vertical"
                android:layout_above="@+id/lb_Descrption"
                android:layout_marginLeft="20dp"
                />
...
</RelativeLayout>
</LinearLayout>

2 个答案:

答案 0 :(得分:2)

您需要为主屏幕密度存储分区和屏幕大小创建不同的布局文件。这样,您就可以对布局进行微调,使其在多个显示中保持一致。

您可以从预览窗口轻松为特定存储桶创建新布局:

  • 点击左下角的enter image description here图标。
  • 然后选择Available Qualifiers
  • 将出现一个弹出窗口,然后从size Density项目中选择不同屏幕尺寸>>的不同密度存储桶。
  • 选择所需项目后,按{{1}}键,您可以选择适合您想要创建新布局文件的存储桶。
  • 在此之后按下确定,android studio为您创建当前布局的副本并将其放在适当的文件夹中,您需要做的就是编辑它以便它看起来像您想要的那样看一下具体的布局。

答案 1 :(得分:0)

您应该像这样使用ScrollView:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
    android:id="@+id/lb_LinearLayout"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <RelativeLayout
        android:id="@+id/lb_Relative_HomeScreen"
        android:layout_width="match_parent"
        android:layout_height="450dp">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="350dp">
            ``   <ImageView
            android:id="@+id/lb_Background_Image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY" />
        </LinearLayout>
        <TextView
            android:id="@+id/lb_Welcome"
            android:text="@string/welcome"
            android:gravity="start"
            style="@style/Heading2.yellow"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:layout_gravity="start|center_vertical"
            android:layout_above="@+id/lb_Descrption"
            android:layout_marginLeft="20dp"
            />
        ...
    </RelativeLayout>
</LinearLayout>

要与所有设备更兼容,请尝试使用&#34; wrap_content&#34;或&#34; match_parent&#34;高度和宽度。如果图像让您在代码中声明dp,请通过以下链接: https://developer.android.com/guide/practices/screens_support.html