2017-04-19 82 views
0

我试图用登录表单做一个简单的应用程序。Android - 如何支持多种屏幕尺寸?

我的问题是,它看起来不错,在Nexus 4,但在Nexus 5或Nexus 7的布局是不是我想要的......

Nexus 4

Nexus 7

什么我需要做一个适用于Nexus S,Nexus 4,5,7等的布局。

XML

 <?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 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:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/AMOB_gray" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.example.tiagosilva.amob_android.Log" 
    tools:showIn="@layout/activity_log"> 

<LinearLayout 
    android:layout_width="368dp" 
    android:layout_height="495dp" 
    android:orientation="vertical" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    tools:layout_editor_absoluteX="8dp" 
    tools:layout_editor_absoluteY="8dp"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <ImageView 
      android:id="@+id/imageView2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:srcCompat="@drawable/logo_amob" /> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      tools:layout_editor_absoluteX="8dp" 
      tools:layout_editor_absoluteY="8dp"> 

      <EditText 
       android:id="@+id/et_email" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" 
       android:layout_alignParentTop="true" 
       android:layout_marginTop="122dp" 
       android:background="@drawable/round" 
       android:ems="10" 
       android:hint="Email" 
       android:inputType="textEmailAddress" 
       android:padding="10dp" /> 

      <EditText 
       android:id="@+id/et_password" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" 
       android:layout_centerVertical="true" 
       android:background="@drawable/round" 
       android:ems="10" 
       android:hint="Password" 
       android:inputType="textPassword" 
       android:padding="10dp" /> 

      <Button 
       android:id="@+id/btn_login" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentEnd="true" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentStart="true" 
       android:layout_below="@+id/et_password" 
       android:layout_marginTop="13dp" 
       android:background="@color/AMOB_yellow" 
       android:text="Login" 
       android:textColor="@color/AMOB_gray" /> 

      <TextView 
       android:id="@+id/tv_recuperarPassword" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/btn_login" 
       android:layout_centerHorizontal="true" 
       android:layout_marginTop="17dp" 
       android:text="Recuperar Password" 
       android:textColor="@android:color/white" 
       android:textSize="17sp" /> 

      <Button 
       android:id="@+id/btn_noAccount" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentEnd="true" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentStart="true" 
       android:text="No Account yet? Register here!" 
       android:background="#ff0000"/> 

     </RelativeLayout> 

    </LinearLayout> 

</LinearLayout> 

+0

“_Questions寻求帮助调试(”为什么不是这个代码的工作?“)必须包括所期望的行为,一个特定的问题或错误的和必要的最短的代码在问题本身中重现它没有明确问题陈述的问题对其他读者没有用请参阅:如何创建一个最小,完整和可验证的示例_“ – csmckelvey

+1

您是否至少浏览了Android文档中的培训部分:https://developer.android.com/training/multiscreen/index.html –

回答

0

属性android:layout_widthandroid:layout_height确定UI组件大小,obvius。有时你应该将它们设置为wrap_contentmatch_parent,而不是固定大小,以适应设备屏幕大小。

就让我们来看看在你的布局,你可以设置android:layout_widthmatch_parent

以前

android:layout_width="368dp"

android:layout_width="match_parent"

+0

谢谢。基本上我永远不能用一个固定的数字来设置宽度和高度吗? – adiajdiadj

+0

这取决于你的设计,在某些情况下,你应该把一个固定的值,但要在其他设备上确定,或者你考虑使用相对布局,比如'RelativeLayout','ConstraintLayout'等......或者让'View's auto根据宽度和高度调节。 – betorcs

+0

在Android Studio的布局编辑器中,您可以选择不同的设备,根据屏幕尺寸检查布局行为。 – betorcs

0

您可以使用SDP库而不是DP。

此外,使用的RelativeLayout或LinearLayout中,而不是ConstraintLayout