Android Studio 相对布局和线性布局不适合某些设备
Android Studio Relative layout and Linear layout does not fit in some devices
我正在尝试开发一个简单的项目管理应用程序。问题出在应用程序屏幕的 xml 布局上。应用程序屏幕在不同设备中的比例不是很好。由于缺少 space.
,某些元素甚至隐藏在某些设备中
我已经尝试过同时使用线性布局和相对布局。我一直将 "Match_parent" 属性用于相对布局和线性布局父块的宽度和高度。但还是在某些屏幕尺寸下,有些元素没有显示,它们在显示区域下方。
<RelativeLayout
android:id="@+id/layout1"
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/white"
tools:context=".login"
android:paddingTop="20dp"
>
<ImageView
android:id="@+id/loginImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/login_logo"
android:layout_centerHorizontal="true"
/>
<TextView
android:id="@+id/loginText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="LOGIN"
android:textColor="@color/orange"
android:textSize="50sp"
android:layout_below="@id/loginImage"
/>
<EditText
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/logintextbackground"
android:layout_centerHorizontal="true"
android:layout_below="@id/loginText"
android:hint="Username"
android:textColorHint="@color/lightOrange"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:textColor="@color/lightOrange"
android:maxLength="15"
/>
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/logintextbackground"
android:layout_centerHorizontal="true"
android:layout_below="@id/username"
android:hint="Password"
android:textColorHint="@color/lightOrange"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:textColor="@color/lightOrange"
android:inputType="textPassword"
android:maxLength="16"
/>
<Button
android:id="@+id/loginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/login_button"
android:layout_below="@id/password"
android:layout_centerHorizontal="true"
/>
<TextView
android:id="@+id/orText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="or"
android:textSize="20dp"
android:textColor="@color/orange"
android:layout_below="@id/loginButton"
android:layout_centerHorizontal="true"
/>
<Button
android:id="@+id/signUpButtonLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/signup"
android:layout_below="@id/loginButton"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
/>
将 ScrollView
作为您的 RelativeLayout
的父级,您应该没问题。参考下面的代码:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<RelativeLayout
android:id="@+id/layout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:paddingTop="20dp"
tools:context=".login">
<ImageView
android:id="@+id/loginImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:src="@drawable/login_logo" />
<TextView
android:id="@+id/loginText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/loginImage"
android:layout_centerHorizontal="true"
android:text="LOGIN"
android:textColor="@color/orange"
android:textSize="50sp" />
<EditText
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/loginText"
android:layout_centerHorizontal="true"
android:background="@drawable/logintextbackground"
android:hint="Username"
android:maxLength="15"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:textColor="@color/lightOrange"
android:textColorHint="@color/lightOrange" />
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/username"
android:layout_centerHorizontal="true"
android:background="@drawable/logintextbackground"
android:hint="Password"
android:inputType="textPassword"
android:maxLength="16"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:textColor="@color/lightOrange"
android:textColorHint="@color/lightOrange" />
<Button
android:id="@+id/loginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/password"
android:layout_centerHorizontal="true"
android:background="@drawable/login_button" />
<TextView
android:id="@+id/orText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/loginButton"
android:layout_centerHorizontal="true"
android:text="or"
android:textColor="@color/orange"
android:textSize="20dp" />
<Button
android:id="@+id/signUpButtonLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/loginButton"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:background="@drawable/signup" />
</RelativeLayout>
</ScrollView>
对于未来的开发,我建议您使用 ConstraintLayout 而不是 LinearLayout
或 RelativeLayout
,因为它提供了更少的视图嵌套。
我正在尝试开发一个简单的项目管理应用程序。问题出在应用程序屏幕的 xml 布局上。应用程序屏幕在不同设备中的比例不是很好。由于缺少 space.
,某些元素甚至隐藏在某些设备中我已经尝试过同时使用线性布局和相对布局。我一直将 "Match_parent" 属性用于相对布局和线性布局父块的宽度和高度。但还是在某些屏幕尺寸下,有些元素没有显示,它们在显示区域下方。
<RelativeLayout
android:id="@+id/layout1"
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/white"
tools:context=".login"
android:paddingTop="20dp"
>
<ImageView
android:id="@+id/loginImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/login_logo"
android:layout_centerHorizontal="true"
/>
<TextView
android:id="@+id/loginText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="LOGIN"
android:textColor="@color/orange"
android:textSize="50sp"
android:layout_below="@id/loginImage"
/>
<EditText
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/logintextbackground"
android:layout_centerHorizontal="true"
android:layout_below="@id/loginText"
android:hint="Username"
android:textColorHint="@color/lightOrange"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:textColor="@color/lightOrange"
android:maxLength="15"
/>
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/logintextbackground"
android:layout_centerHorizontal="true"
android:layout_below="@id/username"
android:hint="Password"
android:textColorHint="@color/lightOrange"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:textColor="@color/lightOrange"
android:inputType="textPassword"
android:maxLength="16"
/>
<Button
android:id="@+id/loginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/login_button"
android:layout_below="@id/password"
android:layout_centerHorizontal="true"
/>
<TextView
android:id="@+id/orText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="or"
android:textSize="20dp"
android:textColor="@color/orange"
android:layout_below="@id/loginButton"
android:layout_centerHorizontal="true"
/>
<Button
android:id="@+id/signUpButtonLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/signup"
android:layout_below="@id/loginButton"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
/>
将 ScrollView
作为您的 RelativeLayout
的父级,您应该没问题。参考下面的代码:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<RelativeLayout
android:id="@+id/layout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:paddingTop="20dp"
tools:context=".login">
<ImageView
android:id="@+id/loginImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:src="@drawable/login_logo" />
<TextView
android:id="@+id/loginText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/loginImage"
android:layout_centerHorizontal="true"
android:text="LOGIN"
android:textColor="@color/orange"
android:textSize="50sp" />
<EditText
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/loginText"
android:layout_centerHorizontal="true"
android:background="@drawable/logintextbackground"
android:hint="Username"
android:maxLength="15"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:textColor="@color/lightOrange"
android:textColorHint="@color/lightOrange" />
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/username"
android:layout_centerHorizontal="true"
android:background="@drawable/logintextbackground"
android:hint="Password"
android:inputType="textPassword"
android:maxLength="16"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:textColor="@color/lightOrange"
android:textColorHint="@color/lightOrange" />
<Button
android:id="@+id/loginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/password"
android:layout_centerHorizontal="true"
android:background="@drawable/login_button" />
<TextView
android:id="@+id/orText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/loginButton"
android:layout_centerHorizontal="true"
android:text="or"
android:textColor="@color/orange"
android:textSize="20dp" />
<Button
android:id="@+id/signUpButtonLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/loginButton"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:background="@drawable/signup" />
</RelativeLayout>
</ScrollView>
对于未来的开发,我建议您使用 ConstraintLayout 而不是 LinearLayout
或 RelativeLayout
,因为它提供了更少的视图嵌套。