【问题标题】:Constraint errors in Java Android StudioJava Android Studio 中的约束错误
【发布时间】:2017-03-10 03:05:34
【问题描述】:

我只能找到一个与此相关的线程,并且答案无助于修复错误。如果这很重要,我将在新笔记本电脑上使用全新安装的 Android Studio(也许我需要安装当前不存在的东西)。

错误:此视图不受约束,它只有设计时位置,所以除非你添加约束,否则它会跳转到 (0,0)

Edit2:新版Android Studio好像没有使用相对布局?我已尝试根据此线程(How to switch from the default ConstraintLayout to RelativeLayout in Android Studio 2.3.3)手动更改代码。还是不行。

编辑: 以下是之前项目中的代码示例(如您所见,这与我当前的实际代码不同):

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.squirreloverlord.ccarringtonphonephotoprint.MainActivity">

下面是我的主要活动代码,它给了我上述错误 x4(按钮/textView x2/radiogroup)。

<?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.mercenaryferret.ccarrington1_currency.MainActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/app_title"
    android:textSize="24sp"
    android:textStyle="bold|italic"
    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.032" />

<EditText
    android:id="@+id/editText_usd"
    android:layout_width="350dp"
    android:layout_height="wrap_content"
    android:ems="10"
    android:hint="@string/us_label"
    android:inputType="numberDecimal"
    android:textAlignment="center"
    android:textSize="12sp"
    tools:layout_editor_absoluteX="17dp"
    tools:layout_editor_absoluteY="69dp"
     />

<RadioGroup
    android:id="@+id/radioGrp"
    android:layout_width="213dp"
    android:layout_height="100dp"
    tools:layout_editor_absoluteX="86dp"
    tools:layout_editor_absoluteY="122dp"
    >

    <RadioButton
        android:id="@+id/radioButtonEuro"
        android:layout_width="98dp"
        android:layout_height="wrap_content"
        android:text="@string/euro_label"
        tools:layout_editor_absoluteX="110dp"
        tools:layout_editor_absoluteY="203dp" />

    <RadioButton
        android:id="@+id/radioButtonCanada"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/canada_label" />

    <RadioButton
        android:id="@+id/radioButtonMexico"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/mex_label" />
</RadioGroup>

<Button
    android:id="@+id/buttonConvert"
    android:layout_width="368dp"
    android:layout_height="wrap_content"
    android:text="@string/convert_label"
    android:textAlignment="center"
    tools:layout_editor_absoluteX="8dp"
    tools:layout_editor_absoluteY="248dp" />

<TextView
    android:id="@+id/textViewResults"
    android:layout_width="316dp"
    android:layout_height="31dp"
    tools:layout_editor_absoluteX="34dp"
    tools:layout_editor_absoluteY="354dp"
     />

提前谢谢你。

【问题讨论】:

标签: java android-studio android-layout


【解决方案1】:

首先在组件树上有ConstraintLayout left 点击它并打开弹出列表然后按照这个:-

  1. 约束布局>>然后清除所有约束
  2. 约束布局 >> 添加推断约束

【讨论】:

    【解决方案2】:

    您需要添加一些缺少的约束,这里是如何做到的。

    1. 转到设计视图
    2. 右键单击您的小部件
    3. 点击“约束布局”
    4. 点击“推断约束”

    如果上面不起作用,请尝试下面。

    1. 转到设计视图
    2. 右键单击您的小部件
    3. 清除所有约束
    4. 点击“约束布局”
    5. 点击“推断约束”

    【讨论】:

    • 根据我的经验,“清除所有约束”按钮的行为是随机的。它肯定不会一致地清除布局中的所有约束。
    【解决方案3】:

    当您使用ConstraintLayout 时,您必须在垂直和水平方向上限制您的视图,否则它们可能会在运行时跳到您屏幕的角落。

    在您进行约束之后,您的视图将根据您的约束放置并与您的屏幕相关 - 您的视图不会在运行时跳转。

    使用约束布局的布局示例:

    <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">
    
    
    <TextView
        android:id="@+id/textView8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:text="app_title"
        android:textSize="24sp"
        android:textStyle="bold|italic"
        app:layout_constraintBottom_toTopOf="@+id/editText_usd"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.032" />
    
    <EditText
        android:id="@+id/editText_usd"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:hint="us_label"
        android:inputType="numberDecimal"
        android:textAlignment="center"
        android:textSize="12sp"
        app:layout_constraintBottom_toTopOf="@+id/radioGrp"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toBottomOf="@+id/textView8" />
    
    <RadioGroup
        android:id="@+id/radioGrp"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        app:layout_constraintBottom_toTopOf="@+id/buttonConvert"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toBottomOf="@+id/editText_usd">
    
        <RadioButton
            android:id="@+id/radioButtonEuro"
            android:layout_width="98dp"
            android:layout_height="wrap_content"
            android:text="euro_label" />
    
        <RadioButton
            android:id="@+id/radioButtonCanada"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="canada_label" />
    
        <RadioButton
            android:id="@+id/radioButtonMexico"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="mex_label" />
    </RadioGroup>
    
    <Button
        android:id="@+id/buttonConvert"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:text="convert_label"
        android:textAlignment="center"
        app:layout_constraintBottom_toTopOf="@+id/textViewResults"
        app:layout_constraintEnd_toEndOf="@+id/editText_usd"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="@+id/editText_usd"
        app:layout_constraintTop_toBottomOf="@+id/radioGrp" />
    
    <TextView
        android:id="@+id/textViewResults"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:text="some text"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="@+id/buttonConvert"
        app:layout_constraintStart_toStartOf="@+id/buttonConvert"
        app:layout_constraintTop_toBottomOf="@+id/buttonConvert" />
    
    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.05" />
    
    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.95" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-31
      • 2018-12-21
      • 2015-10-25
      • 2017-08-24
      • 1970-01-01
      • 2023-04-04
      • 2021-12-20
      相关资源
      最近更新 更多