你好,我在Android Studio中制作我的第一个应用程序,我有一些问题。我读了每一个stackoverflow的主题和android文档关于我的问题,但我仍然不明白我应该做什么。
我使用一个应用程序的约束布局和使用“SDP”“SSP”库不同的屏幕尺寸。在每个设备上的Android Studio预览中(也是我的自定义设备)我的应用程序看起来不错screenshoot但是当我在手机上测试应用程序时(与Android Studio“LG”中的设备相同的手机)应用程序与预览中的screenshoot不一样就像你可以看到一些元素消失了一样
我应该做些什么来使手机上的应用程序看起来与预览版相同,并适应不同的设备和屏幕尺寸?'
这是我的XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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="#ff11111a"
android:theme="@style/Theme.PlayRPGMobile"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="@dimen/_230sdp"
android:layout_height="@dimen/_300sdp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/login_logo"
app:layout_constraintVertical_bias="0.299"
app:srcCompat="@drawable/rectangle" />
<ImageView
android:id="@+id/login_logo"
android:layout_width="@dimen/_300sdp"
android:layout_height="0dp"
android:layout_marginTop="@dimen/_64sdp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.476"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/logo" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_28sdp"
android:fontFamily="sans-serif-medium"
android:text="Wprowadź swoje dane"
android:textSize="@dimen/_15ssp"
app:layout_constraintBottom_toTopOf="@+id/loginEdit"
app:layout_constraintEnd_toEndOf="@+id/imageView"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintStart_toStartOf="@+id/imageView"
app:layout_constraintTop_toTopOf="@+id/imageView"
app:layout_constraintVertical_bias="0.0"
tools:text="Wprowadź swoje dane" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_24sdp"
android:fontFamily="sans-serif-medium"
android:text="Play RPG © 2022"
android:textSize="@dimen/_15ssp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView"
tools:text="Play RPG © 2022" />
<EditText
android:id="@+id/loginEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_80sdp"
android:background="#ff222228"
android:ems="10"
android:hint="Login..."
android:inputType="textPersonName"
android:minHeight="@dimen/_38sdp"
android:paddingLeft="@dimen/_10sdp"
android:paddingTop="@dimen/_5sdp"
android:paddingBottom="@dimen/_2sdp"
app:layout_constraintEnd_toEndOf="@+id/imageView"
app:layout_constraintHorizontal_bias="0.533"
app:layout_constraintStart_toStartOf="@+id/imageView"
app:layout_constraintTop_toTopOf="@+id/imageView" />
<EditText
android:id="@+id/passEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_20sdp"
android:background="#ff222228"
android:ems="10"
android:hint="Hasło..."
android:inputType="textPassword"
android:minHeight="@dimen/_38sdp"
android:paddingLeft="@dimen/_10sdp"
android:paddingTop="@dimen/_5sdp"
android:paddingBottom="@dimen/_5sdp"
app:layout_constraintEnd_toEndOf="@+id/loginEdit"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/loginEdit"
app:layout_constraintTop_toBottomOf="@+id/loginEdit" />
<Button
android:id="@+id/loginBtn"
android:layout_width="@dimen/_130sdp"
android:layout_height="@dimen/_38sdp"
android:backgroundTint="#ff222228"
android:fontFamily="sans-serif-medium"
android:text="Zaloguj"
android:textColor="@color/white"
app:layout_constraintBottom_toBottomOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="@+id/pinEdit"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="@+id/pinEdit"
app:layout_constraintTop_toBottomOf="@+id/pinEdit"
app:layout_constraintVertical_bias="0.512" />
<EditText
android:id="@+id/pinEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_20sdp"
android:background="#ff222228"
android:ems="10"
android:hint="PIN..."
android:inputType="number"
android:minHeight="@dimen/_38sdp"
android:paddingLeft="@dimen/_10sdp"
android:paddingTop="@dimen/_5sdp"
android:paddingBottom="@dimen/_5sdp"
app:layout_constraintEnd_toEndOf="@+id/passEdit"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/passEdit"
app:layout_constraintTop_toBottomOf="@+id/passEdit" />
</androidx.constraintlayout.widget.ConstraintLayout>
4条答案
按热度按时间8wtpewkr1#
对于响应式UI,我建议在约束布局中使用指南。你可以参考这个约束布局训练指南。也可以在约束布局Chains中使用链
9njqaruj2#
避免硬编码布局大小不同的屏幕尺寸
为了确保布局灵活并适应不同的屏幕尺寸,您应该使用
wrap_content
或match_parent
来指定大多数视图组件的宽度和高度,而不是硬编码的尺寸。wrap_content
告诉视图将其大小设置为适合该视图中的内容所需的任何大小。match_parent
使视图在父视图中尽可能地扩展。看看Android documentation会对你有帮助。
yc0p9oo03#
使用指导方针和约束的意见,它。我遇到了同样的问题,指导方针对我帮助很大。
mnemlml84#
我也遇到过类似的情况,但从来没有找到一个简单的解释。显然,更合理的选择是使用技术文档