我正在用android studio创建我的第一个应用程序,这是我的第一个问题:
我想尝试ConstraintLayout。我使用Design Editor(一起单击它)使用ConstraintLayout构建了布局。当我在Android模拟器中尝试布局时,所有按钮都在左上角移动:( 除了" Hello World"我创建第一个项目时自动生成的标签。
Label和Button之间的区别在于,缺少以app:layout_constraint ....开头的一些代码行。你可以在Code中看到它。
我做错了什么,或者它是一个错误? 我很乐意回答! :)
<?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.example.u0017007.coffeecounter.MainActivity">
<TextView
android:layout_width="136dp"
android:layout_height="30dp"
android:text="Hello World!"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.234" />
<Button
android:id="@+id/buttonAddCoffee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:freezesText="false"
android:text="@string/add_coffee"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="231dp" />
<Button
android:id="@+id/buttonRemoveCoffee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/remove_coffee"
tools:layout_editor_absoluteX="236dp"
tools:layout_editor_absoluteY="231dp" />
</android.support.constraint.ConstraintLayout>
答案 0 :(得分:3)
从上面的代码看来,你没有向按钮添加任何约束,这就是他们移动到左上角的原因。
<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">
<TextView
android:layout_width="136dp"
android:layout_height="30dp"
android:text="Hello World!"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.234" />
<Button
android:id="@+id/buttonAddCoffee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:freezesText="false"
android:text="ADD coffee"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="276dp"
app:layout_constraintRight_toLeftOf="@+id/buttonRemoveCoffee"
android:layout_marginRight="82dp"
android:layout_marginLeft="24dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintHorizontal_bias="1.0" />
<Button
android:id="@+id/buttonRemoveCoffee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="remove coffee"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="276dp"
android:layout_marginRight="24dp"
app:layout_constraintRight_toRightOf="parent" />
</android.support.constraint.ConstraintLayout>
请参阅下面的链接 -
答案 1 :(得分:3)
tools:layout_editor_absoluteX
和tools:layout_editor_absoluteY
仅用于预览,与所有tools:XXXX
一样
您需要为视图添加约束。您可以添加XML,也可以使用可视化编辑器。
有一个很好的website可以解释ConstraintsLayout
的所有内容。
顺便说一句,如果你没有设置约束,Android Studio会给你一个错误This view is not constrained, it only has designtime positions, so it will jump to (0,0) unless you add constraints
。
答案 2 :(得分:0)
工具:layout_editor_absoluteX = “236dp”
工具:layout_editor_absoluteY = “231dp”
工作室使用它们仅在图形编辑器中渲染。在运行期间,
由于未设置约束,视图采用默认位置(0,0)。
尝试在按钮和过程
上设置一些约束