我正處於Android開發階段。最近,爲了練習佈局設計,我試圖建立一個簡單計算器的模擬。我在「設計」選項卡中創建並放置了視圖(按鈕,EditTexts)。然後我被困在「這個視圖不受約束」的錯誤,所以我搜索了StackOverflow,最後發現解決方案是右鍵單擊小部件 - >約束佈局 - >推斷約束。但是當我做到這一點時,我的程序中的這些視圖發生了很大的變化,我無法將它們修改爲原始位置和大小。如何在不改變視圖的位置和大小的情況下解決錯誤?在Android Studio中使用約束佈局會造成奇怪的後果
這是之前使用約束佈局我的計算器:
before_constraint:
這是使用後,我的計算器吧:
after_constraint:
這是我的源代碼:
<?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"
tools:context="com.huy9515gmail.helloworld.MainActivity"
tools:layout_editor_absoluteY="81dp"
tools:layout_editor_absoluteX="0dp">
<Button
android:id="@+id/button10"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="0"
tools:layout_editor_absoluteX="87dp"
tools:layout_editor_absoluteY="186dp" />
<Button
android:id="@+id/button7"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="7"
tools:layout_editor_absoluteX="34dp"
tools:layout_editor_absoluteY="141dp" />
<Button
android:id="@+id/button8"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="8"
tools:layout_editor_absoluteX="87dp"
tools:layout_editor_absoluteY="141dp" />
<Button
android:id="@+id/button9"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="9"
tools:layout_editor_absoluteX="140dp"
tools:layout_editor_absoluteY="141dp" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My First Calculator"
tools:layout_editor_absoluteX="134dp"
tools:layout_editor_absoluteY="16dp" />
<Button
android:id="@+id/button"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="2"
tools:layout_editor_absoluteX="87dp"
tools:layout_editor_absoluteY="51dp" />
<Button
android:id="@+id/button3"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="3"
tools:layout_editor_absoluteX="140dp"
tools:layout_editor_absoluteY="51dp" />
<Button
android:id="@+id/button4"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="/"
tools:layout_editor_absoluteX="281dp"
tools:layout_editor_absoluteY="96dp" />
<Button
android:id="@+id/button14"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="x"
tools:layout_editor_absoluteX="228dp"
tools:layout_editor_absoluteY="96dp" />
<Button
android:id="@+id/button13"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="-"
tools:layout_editor_absoluteX="281dp"
tools:layout_editor_absoluteY="51dp" />
<Button
android:id="@+id/button12"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="+"
tools:layout_editor_absoluteX="228dp"
tools:layout_editor_absoluteY="51dp" />
<Button
android:id="@+id/button11"
android:layout_width="106dp"
android:layout_height="40dp"
android:text="Delete"
tools:layout_editor_absoluteX="228dp"
tools:layout_editor_absoluteY="210dp" />
<Button
android:id="@+id/button16"
android:layout_width="106dp"
android:layout_height="40dp"
android:text="Calculate"
tools:layout_editor_absoluteX="228dp"
tools:layout_editor_absoluteY="170dp" />
<Button
android:id="@+id/button15"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="1"
tools:layout_editor_absoluteX="34dp"
tools:layout_editor_absoluteY="51dp" />
<Button
android:id="@+id/button2"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="4"
tools:layout_editor_absoluteX="34dp"
tools:layout_editor_absoluteY="96dp" />
<Button
android:id="@+id/button5"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="5"
tools:layout_editor_absoluteX="87dp"
tools:layout_editor_absoluteY="96dp" />
<Button
android:id="@+id/button6"
android:layout_width="53dp"
android:layout_height="45dp"
android:text="6"
tools:layout_editor_absoluteX="140dp"
tools:layout_editor_absoluteY="96dp" />
<EditText
android:id="@+id/editText"
android:layout_width="310dp"
android:layout_height="98dp"
android:ems="10"
android:inputType="textPersonName"
tools:layout_editor_absoluteX="37dp"
tools:layout_editor_absoluteY="327dp" />
爲什麼使用硬編碼大小? –
硬編碼尺寸?對不起,但....我不明白@@他們是什麼? –
您已明確設置爲「## dp」的任何內容。理想情況下,數字鍵盤被包裝在GridLayout中。每個按鈕都可以擴展到網格單元的大小。您將網格相對於整個屏幕(具有水平LinearLayout)以及該LinearLayout中的大小進行調整,然後將其他按鈕放置在另一個單獨的垂直LinearLayout中,方法與此類似。您希望按鈕都是一個單位,是我的觀點 –