我只是 kotlin 的新手,現在嘗試在 android studio 中設計個人資料頁面,就像下面的圖片一樣。

當我設計個人資料頁面時,我意識到應用程式中的設計顯示正確。因此,我在手機模擬器中運行該專案,然后所有內容都卡在了左上角。之后,我嘗試添加相對布局,但結果仍然相同。我可以知道我做錯了哪一部分或有什么解決辦法嗎?

下面是編碼
<?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"
tools:context=".MainActivity"
android:background="@color/white">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:background="@color/white">
<ImageView
android:id="@ id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="141dp"
tools:layout_editor_absoluteY="98dp"
tools:srcCompat="@tools:sample/avatars"
android:contentDescription="@string/app_name"/>
<EditText
android:id="@ id/editTextTextPersonName2"
android:layout_width="175dp"
android:layout_height="48dp"
android:ems="10"
android:inputType="textPersonName"
android:text="@string/first_name"
android:textStyle="bold"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="265dp" />
<EditText
android:id="@ id/editTextTextPersonName3"
android:layout_width="175dp"
android:layout_height="48dp"
android:ems="10"
android:inputType="textPersonName"
android:text="@string/last_name"
android:textStyle="bold"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="220dp"
tools:layout_editor_absoluteY="265dp" />
<EditText
android:id="@ id/editTextTextEmailAddress"
android:layout_width="379dp"
android:layout_height="48dp"
android:ems="10"
android:inputType="textEmailAddress"
android:text="@string/email"
android:textStyle="bold"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="333dp" />
<EditText
android:id="@ id/editTextTextPassword"
android:layout_width="379dp"
android:layout_height="48dp"
android:ems="10"
android:text="@string/password"
android:textStyle="bold"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="407dp"
android:inputType="textVisiblePassword"/>
<!--android:inputType="textPassword"-->
<EditText
android:id="@ id/editTextTextPassword2"
android:layout_width="379dp"
android:layout_height="48dp"
android:ems="10"
android:text="@string/confirm_password"
android:textStyle="bold"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="479dp"
android:inputType="textVisiblePassword"/>
<!--android:inputType="textPassword"-->
<Button
android:id="@ id/button"
android:layout_width="378dp"
android:layout_height="48dp"
android:text="@string/save"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="556dp" />
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
uj5u.com熱心網友回復:
作業的方式ConstraintLayout是您使用約束定義視圖的位置和大小- 例如“與父級的左邊緣對齊”、“在此下方ImageView以 16dp 的邊距”、“填充這兩個視圖之間的空間,但是保持 16:9 的縱橫比”等。
你這里有三個問題:
- 您正在使用 a
ConstraintLayout但您沒有設定任何約束,并且您已經抑制了警告您的錯誤tools:ignore="MissingConstraints" - 您所有的東西都嵌套在 a 中
RelativeLayout,因此無論如何它都不會使用約束,并且 theConstraintLayout沒用 - 您在
RelativeLayout(absoluteX和所有這些)中使用絕對定位,但您使用的tools前綴是用于定義在設計時顯示的東西,而不是在應用程式運行時顯示的東西- 它用于測驗、占位符文本等layout_editor_absoluteX。一個只在布局編輯器中有效的特殊屬性——它就像你在設計時的定位技巧。應用程式運行時不會影響任何內容。
所以結果是你的視圖實際上都沒有設定任何定位屬性,它們都只是在原點的左上角結束
您可能應該放棄該RelativeLayout方法并獲得使用ConstraintLayout(無論如何聽起來您都想要)-它更加靈活,您將在某個時候遇到它/需要它
uj5u.com熱心網友回復:
<?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"
tools:context=".MainActivity"
android:background="@color/white">
<ImageView
android:id="@ id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="64dp"
android:contentDescription="@string/app_name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:src="@mipmap/ic_launcher"/>
<EditText
android:id="@ id/editTextTextPersonName2"
android:layout_width="175dp"
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:layout_marginTop="72dp"
android:ems="10"
android:inputType="textPersonName"
android:hint="@string/first_name"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@ id/imageView2" />
<EditText
android:id="@ id/editTextTextPersonName3"
android:layout_width="175dp"
android:layout_height="48dp"
android:layout_marginTop="73dp"
android:layout_marginEnd="16dp"
android:ems="10"
android:inputType="textPersonName"
android:hint="@string/last_name"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@ id/imageView2" />
<EditText
android:id="@ id/editTextTextEmailAddress"
android:layout_width="379dp"
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:ems="10"
android:inputType="textEmailAddress"
android:hint="@string/email"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@ id/editTextTextPersonName2" />
<EditText
android:id="@ id/editTextTextPassword"
android:layout_width="379dp"
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:ems="10"
android:inputType="textVisiblePassword"
android:hint="@string/password"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@ id/editTextTextEmailAddress" />
<EditText
android:id="@ id/editTextTextPassword2"
android:layout_width="379dp"
android:layout_height="48dp"
android:layout_marginTop="16dp"
android:ems="10"
android:inputType="textVisiblePassword"
android:hint="@string/confirm_password"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@ id/editTextTextPassword" />
<Button
android:id="@ id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/save"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@ id/editTextTextPassword2" />
</androidx.constraintlayout.widget.ConstraintLayout>
uj5u.com熱心網友回復:
只需洗掉“RelativeLayout”標簽。從此處了解有關“約束布局”的更??多資訊。https://developer.android.com/training/constraint-layout
uj5u.com熱心網友回復:
從這里復制答案無濟于事,它會讓你在下一個布局中掙扎,相反,我建議你看看:
- 約束布局
- 相對布局
- 線性布局
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/439058.html
