约束布局不工作;整个设备的布局都被破坏了

x33g5p2x  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(310)

所需布局照片
测试时的当前布局照片
在不同的设备之间,布局发生了巨大的变化。我在google上四处寻找答案,但没有任何东西能清楚地说明什么是正确的做事方式,什么是不正确的做事方式。有什么办法?
注意:下面的代码中不包括最后一个图像视图的二十个相同副本。它们是用来移动图形的。

<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">

        <com.example.castbuddyv1.FFVisuals
            android:id="@+id/FFVisuals"
            android:layout_width="389dp"
            android:layout_height="781dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.4"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/rawdata" />

        <Button
            android:id="@+id/right2"
            android:layout_width="59dp"
            android:layout_height="48dp"
            android:layout_marginStart="84dp"
            android:layout_marginLeft="84dp"
            android:layout_marginTop="658dp"
            android:layout_marginBottom="29dp"
            app:icon="@drawable/abc_vector_test"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/onoff"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.39" />

        <ToggleButton
            android:id="@+id/onoff"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="32dp"
            android:layout_marginLeft="32dp"
            android:layout_marginTop="700dp"
            android:layout_marginEnd="32dp"
            android:layout_marginRight="32dp"
            android:layout_marginBottom="32dp"
            android:rotation="0"
            android:textOff="Motors On"
            android:textOn="Motors Off"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.497"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.922" />

        <Button
            android:id="@+id/right"
            android:layout_width="59dp"
            android:layout_height="48dp"
            android:layout_marginTop="658dp"
            android:layout_marginEnd="51dp"
            android:layout_marginRight="51dp"
            android:layout_marginBottom="29dp"
            android:rotation="180"
            app:icon="@drawable/abc_vector_test"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toEndOf="@+id/onoff"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="1.0" />

        <TextView
            android:id="@+id/statusdisplay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="166dp"
            android:layout_marginLeft="166dp"
            android:layout_marginTop="595dp"
            android:layout_marginEnd="183dp"
            android:layout_marginRight="183dp"
            android:layout_marginBottom="44dp"
            android:text="Status:"
            app:layout_constraintBottom_toTopOf="@+id/onoff"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/depth"
            android:layout_width="80dp"
            android:layout_height="31dp"
            android:layout_marginEnd="49dp"
            android:layout_marginRight="49dp"
            android:text="Depth:"
            app:layout_constraintBottom_toBottomOf="@+id/rawdata"
            app:layout_constraintEnd_toStartOf="@+id/connect"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@+id/connect"
            app:layout_constraintVertical_bias="1.0" />

        <Switch
            android:id="@+id/rawdata"
            android:layout_width="92dp"
            android:layout_height="34dp"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginBottom="692dp"
            android:text="Raw Data"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/connect"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.0" />

        <Button
            android:id="@+id/connect"
            android:layout_width="110dp"
            android:layout_height="38dp"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:text="@string/connect"
            app:layout_constraintBottom_toBottomOf="@+id/rawdata"
            app:layout_constraintEnd_toStartOf="@+id/rawdata"
            app:layout_constraintStart_toEndOf="@+id/depth"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="1.0" />

<ImageView
            android:id="@+id/fish"
            android:layout_width="57dp"
            android:layout_height="33dp"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginEnd="320dp"
            android:layout_marginRight="320dp"
            android:layout_marginBottom="87dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:srcCompat="@drawable/kisspng_computer_icons_symbol_clip_art_5b2bf54c62bee1_4646889015296075004045

</androidx.constraintlayout.widget.ConstraintLayout>
kuhbmx9i

kuhbmx9i1#

我不确定这部分是什么:

<com.example.castbuddyv1.FFVisuals
        android:id="@+id/FFVisuals"
        android:layout_width="389dp"
        android:layout_height="781dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.4"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/rawdata" />

我是一个初学者,我不知道这是否对你有帮助,但是假设我想设计你的界面,我会这样做:
确保通过添加以下代码垂直显示界面 AndroidManifest.xml 文件:

android:screenOrientation="sensorPortrait"
<category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
 </activity>

在constraintlayout中放置垂直和水平准则:

<androidx.constraintlayout.widget.Guideline
   android:id="@+id/v_guideline1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:orientation="vertical"
   app:layout_constraintGuide_begin="20dp" />

 <androidx.constraintlayout.widget.Guideline
   android:id="@+id/h_guideline1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:orientation="horizontal"
   app:layout_constraintGuide_begin="20dp" />

更换 (app:layout_constraintGuide_begin="20dp")(app:layout_constraintGuide_percent="x%") 根据百分比放置。
例如:第一条垂直引导线为30%,第一条水平引导线为50%:

<androidx.constraintlayout.widget.Guideline
   android:id="@+id/guideline1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:orientation="vertical"
   app:layout_constraintGuide_percent="0.3" />

 <androidx.constraintlayout.widget.Guideline
   android:id="@+id/h_guideline1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:orientation="horizontal"
   app:layout_constraintGuide_percent="0.5" />

这就是我要做的,以确保每个小部件出现在我想要的位置。
以下是android studio中的外观:
设计+蓝图
这是它的外观:像素xl 1440× 2560:560dpi:像素xl
这就是它的样子:Nexus92048×1536:xhdpi24:nexus 9
您可以看到屏幕大小发生了变化,但是小部件保持在相同的位置
这是此接口的xml:

<?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">

<androidx.constraintlayout.widget.Guideline
  android:id="@+id/h_0"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  app:layout_constraintGuide_percent="0.03" />

<androidx.constraintlayout.widget.Guideline
  android:id="@+id/h_1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  app:layout_constraintGuide_percent="0.1" />

<androidx.constraintlayout.widget.Guideline
  android:id="@+id/h_2"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  app:layout_constraintGuide_percent="0.8" />

<androidx.constraintlayout.widget.Guideline
  android:id="@+id/h_3"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  app:layout_constraintGuide_percent="0.9" />

<androidx.constraintlayout.widget.Guideline
  android:id="@+id/h_4"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  app:layout_constraintGuide_percent="0.97" />

<androidx.constraintlayout.widget.Guideline
  android:id="@+id/v_0"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  app:layout_constraintGuide_percent="0.2" />

<androidx.constraintlayout.widget.Guideline
  android:id="@+id/v_1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  app:layout_constraintGuide_percent="0.35" />

<androidx.constraintlayout.widget.Guideline
  android:id="@+id/v_2"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  app:layout_constraintGuide_percent="0.65" />

<androidx.constraintlayout.widget.Guideline
  android:id="@+id/v_3"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  app:layout_constraintGuide_percent="0.8" />

<TextView
  android:id="@+id/depth"
  android:layout_width="0dp"
  android:layout_height="0dp"
  android:text="Depth:"
  app:layout_constraintTop_toTopOf="@+id/h_0" 
  app:layout_constraintBottom_toTopOf="@+id/h_1"
  app:layout_constraintStart_toStartOf="parent"
  app:layout_constraintEnd_toStartOf="@+id/v_0" 
  />

<Button
  android:id="@+id/connect"
  android:layout_width="0dp"
  android:layout_height="0dp"
  android:text="@string/connect"
  app:layout_constraintTop_toTopOf="@+id/h_0"
  app:layout_constraintBottom_toTopOf="@+id/h_1"
  app:layout_constraintStart_toEndOf="@+id/v_1"
  app:layout_constraintEnd_toStartOf="@+id/v_2"
   />

<Switch
  android:id="@+id/rawdata"
  android:layout_width="0dp"
  android:layout_height="0dp"
  android:text="Raw Data"
  app:layout_constraintTop_toTopOf="@+id/h_0"
  app:layout_constraintBottom_toTopOf="@+id/h_1"
  app:layout_constraintStart_toEndOf="@+id/v_3"
  app:layout_constraintEnd_toEndOf="parent"  
  />

<Button
  android:id="@+id/right2"
  android:layout_width="0dp"
  android:layout_height="0dp"
  app:icon="@drawable/abc_vector_test"
  app:layout_constraintTop_toBottomOf="@+id/h_3"
  app:layout_constraintBottom_toTopOf="@+id/h_4"
  app:layout_constraintStart_toStartOf="@+id/v_0"
  app:layout_constraintEnd_toStartOf="@+id/v_1"
   />

<ToggleButton
  android:id="@+id/onoff"
  android:layout_width="0dp"
  android:layout_height="0dp"
  android:rotation="0"
  android:textOff="Motors On"
  android:textOn="Motors Off"
  app:layout_constraintTop_toBottomOf="@+id/h_3"
  app:layout_constraintBottom_toTopOf="@+id/h_4"
  app:layout_constraintStart_toEndOf="@+id/v_1"
  app:layout_constraintEnd_toStartOf="@+id/v_2"   
  />

<Button
  android:id="@+id/right"
  android:layout_width="0dp"
  android:layout_height="0dp"
  android:rotation="180"
  app:icon="@drawable/abc_vector_test"
  app:layout_constraintTop_toBottomOf="@+id/h_3"
  app:layout_constraintBottom_toTopOf="@+id/h_4"
  app:layout_constraintStart_toEndOf="@+id/v_2"
  app:layout_constraintEnd_toStartOf="@+id/v_3"      
  />

<TextView
  android:id="@+id/statusdisplay"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:text="Status:"
  app:layout_constraintTop_toTopOf="@+id/h_2"
  app:layout_constraintStart_toStartOf="@+id/v_1"
  app:layout_constraintEnd_toStartOf="@+id/v_2"             
/>

<ImageView
  android:id="@+id/fish"
  android:layout_width="0dp"
  android:layout_height="0dp"
  app:layout_constraintTop_toTopOf="@+id/h_2"
  app:layout_constraintBottom_toTopOf="@+id/h_3"
  app:layout_constraintStart_toStartOf="parent"
  app:layout_constraintEnd_toStartOf="@+id/v_0"
   />

</androidx.constraintlayout.widget.ConstraintLayout>

请注意,我将小部件的宽度和高度设置为0dp:

android:layout_width="0dp"
android:layout_height="0dp"

因为指导方针是按百分比设置的,所以小部件将根据屏幕的大小进行拉伸和收缩
您可以通过分配dp值来固定小部件的大小,例如:

android:layout_width="70dp"
android:layout_height="40dp"

这就是我所得到的,我希望我的解释是清楚和有用的。

bbuxkriu

bbuxkriu2#

你可以学习 ConstrainLayout 从这里开始
我试着找出在代码中应用约束的问题。希望这对您有所帮助,请检查以下代码:

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">

<com.example.castbuddyv1.FFVisuals
    android:id="@+id/FFVisuals"
    android:layout_width="389dp"
    android:layout_height="781dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.4"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/rawdata" />

<Button
    android:id="@+id/right2"
    android:layout_width="59dp"
    android:layout_height="48dp"
    android:layout_marginBottom="29dp"
    app:icon="@drawable/abc_vector_test"
    app:layout_constraintBaseline_toBaselineOf="@id/onoff"
    app:layout_constraintEnd_toStartOf="@+id/onoff" />

<ToggleButton
    android:id="@+id/onoff"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="32dp"
    android:rotation="0"
    android:textOff="Motors On"
    android:textOn="Motors Off"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

<Button
    android:id="@+id/right"
    android:layout_width="59dp"
    android:layout_height="48dp"
    android:layout_marginBottom="29dp"
    android:rotation="180"
    app:icon="@drawable/abc_vector_test"
    app:layout_constraintBaseline_toBaselineOf="@id/onoff"
    app:layout_constraintStart_toEndOf="@+id/onoff" />

<TextView
    android:id="@+id/statusdisplay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="44dp"
    android:text="Status:"
    app:layout_constraintBottom_toTopOf="@+id/onoff"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

<TextView
    android:id="@+id/depth"
    android:layout_width="80dp"
    android:layout_height="31dp"
    android:layout_marginStart="16dp"
    android:text="Depth:"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/connect" />

<Switch
    android:id="@+id/rawdata"
    android:layout_width="92dp"
    android:layout_height="34dp"
    android:layout_marginEnd="16dp"
    android:text="Raw Data"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:id="@+id/connect"
    android:layout_width="110dp"
    android:layout_height="38dp"
    android:layout_marginStart="16dp"
    android:layout_marginLeft="16dp"
    android:layout_marginEnd="16dp"
    android:layout_marginRight="16dp"
    android:text="Connect"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<ImageView
    android:id="@+id/fish"
    android:layout_width="57dp"
    android:layout_height="33dp"
    android:layout_marginStart="16dp"
    android:layout_marginBottom="87dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:srcCompat="@mipmap/ic_launcher" />

</androidx.constraintlayout.widget.ConstraintLayout>

相关问题