Android - 如何支持多种屏幕尺寸?
我试图用登录表单做一个简单的应用程序。Android - 如何支持多种屏幕尺寸?
我的问题是,它看起来不错,在Nexus 4,但在Nexus 5或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>
属性android:layout_width
和android:layout_height
确定UI组件大小,obvius。有时你应该将它们设置为wrap_content
或match_parent
,而不是固定大小,以适应设备屏幕大小。
就让我们来看看在你的布局,你可以设置android:layout_width
到match_parent
,
以前
android:layout_width="368dp"
后
android:layout_width="match_parent"
谢谢。基本上我永远不能用一个固定的数字来设置宽度和高度吗? – adiajdiadj
这取决于你的设计,在某些情况下,你应该把一个固定的值,但要在其他设备上确定,或者你考虑使用相对布局,比如'RelativeLayout','ConstraintLayout'等......或者让'View's auto根据宽度和高度调节。 – betorcs
在Android Studio的布局编辑器中,您可以选择不同的设备,根据屏幕尺寸检查布局行为。 – betorcs
“_Questions寻求帮助调试(”为什么不是这个代码的工作?“)必须包括所期望的行为,一个特定的问题或错误的和必要的最短的代码在问题本身中重现它没有明确问题陈述的问题对其他读者没有用请参阅:如何创建一个最小,完整和可验证的示例_“ – csmckelvey
您是否至少浏览了Android文档中的培训部分:https://developer.android.com/training/multiscreen/index.html –