如果使用物理设备或Bluestacks仿真器,布局显示会有很大不同

时间:2017-03-28 09:11:34

标签: android xml android-layout android-emulator android-xml

我一直在使用Android Studio和BlueStacks开发Android应用程序,但一切都很棒。但是,当我尝试在我的物理设备上运行应用程序时,所有内容的显示方式都截然不同。

Bluestacks模拟中的一切看起来都很棒(手机设置为纵向模式),但随后在物理手机上所有东西看起来都被挤压在一起(好像手机有TINY分辨率等)。

有没有人见过类似的东西?这只是我物理设备的问题吗?

Here is an image of what the login page looks like in Emulator

And here's the physical device Screenshot

这是我的XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_login"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#ff292929"
tools:context="com.socialivemusic.socialivemusic.LoginActivity">
<ImageView
    android:layout_width="wrap_content"
    android:layout_height="200dp"
    app:srcCompat="@drawable/socialogo"
    android:id="@+id/imageView"
    android:layout_gravity="center"
    android:layout_alignParentTop="true"
    android:layout_marginBottom="50dp"
    android:layout_centerHorizontal="true"/>

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textEmailAddress"
    android:layout_below="@+id/imageView"
    android:layout_marginBottom="50dp"
    android:ems="10"
    android:id="@+id/loginEmail"
    android:background="#ffffffff"
    android:hint="Enter Email"
    android:textColorHint="#ff434343"
    android:textColor="#ff292929"
    android:textSize="30sp"/>

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textPassword"
    android:layout_below="@id/loginEmail"
    android:ems="10"
    android:id="@+id/loginPw"
    android:background="#ffffffff"
    android:hint="Enter Password"
    android:textColorHint="#ff434343"
    android:textColor="#ff292929"
    android:layout_marginBottom="@dimen/activity_horizontal_margin"
    android:textSize="30sp"/>

<Button
    android:text="LOGIN"
    android:textColor="#ffffffff"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_marginTop="@dimen/activity_horizontal_margin"
    android:id="@+id/loginButton"
    android:background="#08AE9E"
    android:layout_below="@+id/loginPw"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:textSize="30sp"/>

<TextView
    android:text="I fogot my Password"
    android:textColor="#ffffffff"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/loginButton"
    android:layout_marginTop="@dimen/activity_horizontal_margin"
    android:layout_centerHorizontal="true"
    android:id="@+id/toPwRedo"
    android:textSize="20sp"/>

<Button
    android:text="REGISTER"
    android:textColor="#ffffff"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_alignParentBottom="true"
    android:id="@+id/toRegister"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:background="#ff434343"
    android:textSize="30sp"/>
</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

这是因为你的设备&amp;模拟器的大小不同。当您在dp中给出大小时,您应该将这些大小放在dimens.xml,dimens.xml(w600dp),dimens.xml(w720dp),dimens.xml(w820dp)&amp;的文件中。更多,以迎合不同密度的设备和分辨率。

例如: dimens.xml- <dimen name="d2dp">2dp</dimen>, dimens.xml(w600dp) - <dimen name="d2dp">3dp</dimen>, dimens.xml(w720dp) - <dimen name="d2dp">4dp</dimen>

然后在您的布局中将其用作android:layout_height="@dimen/d2dp&#34;

了解处理不同尺寸的屏幕。