我正处于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中,方法与此类似。您希望按钮都是一个单位,是我的观点 –