【问题标题】:constraint layout gone wrong, placing textview wrong on device约束布局出错,在设备上放置 textview 错误
【发布时间】:2017-05-07 21:34:23
【问题描述】:

所以我从 android studio 开始,它用约束布局打了我的脸。起初我是......帮助......但在它看起来非常好并且在阅读了一点之后,我觉得我应该尝试一下。 现在我已经完成了我的设计并尝试在我的手机上运行它,我得到了一个不同的布局,那么它应该是。

我使用带有 android 7.0 的 lg5,我还添加了一个带有 lg5 规格的虚拟设备,带有 android 7.1/7.0,这似乎是正确的。

我尝试在谷歌上查找,但找不到任何可以帮助我的答案或提示。 我在不和谐的 reddit android-dev 上寻求帮助,但他们也不知道,否则我应该使用相对布局。但我想先知道我做错了什么。

有人可以帮我解决我缺少的或做错了什么吗?

“还没有帐户?”下的按钮和字段正在正常工作并且正在隐藏(不可见)。

编辑仍然希望有人能看到我做错了什么,以便我以后可以学习:)

这是我的 xml:

<?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.cyberdog.mtgcollection.Login">


<EditText
    android:id="@+id/etvLoginNameDCI"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:hint="Name/DCI Number"
    android:inputType="textPersonName"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginRight="8dp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintHorizontal_bias="0.500"
    android:layout_marginBottom="8dp"
    app:layout_constraintBottom_toTopOf="@+id/etvLoginPassword"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="16dp"
    app:layout_constraintVertical_bias="1.0" />

<EditText
    android:id="@+id/etvLoginPassword"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:hint="Password"
    android:inputType="textPassword"
    android:layout_marginRight="8dp"
    app:layout_constraintRight_toRightOf="parent"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintHorizontal_bias="0.500"
    android:layout_marginBottom="8dp"
    app:layout_constraintBottom_toTopOf="@+id/cbLoginRememberMe" />

<CheckBox
    android:id="@+id/cbLoginRememberMe"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="false"
    android:text="Remeber me"
    android:textSize="10sp"
    android:layout_marginBottom="45dp"
    app:layout_constraintBottom_toTopOf="@+id/btnLoginLogin"
    android:layout_marginRight="8dp"
    app:layout_constraintRight_toRightOf="parent"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintHorizontal_bias="0.328" />

<Button
    android:id="@+id/btnLoginLogin"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:text="Log in"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    tools:layout_constraintBottom_creator="1"
    tools:layout_constraintLeft_creator="1"
    tools:layout_constraintRight_creator="1"
    android:layout_marginBottom="89dp"
    app:layout_constraintBottom_toTopOf="@+id/tvRegisterAlreadyRegister" />


<TextView
    android:id="@+id/tvRegisterAlreadyRegister"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:text="Dont have a n account yet?"
    android:textAllCaps="false"
    android:textColor="@android:color/holo_blue_bright"
    android:textSize="18sp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    tools:layout_constraintLeft_creator="1"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintTop_creator="1"
    android:layout_marginRight="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginBottom="8dp"
    app:layout_constraintBottom_toTopOf="@+id/etvRegisterNameDCI" />

<EditText
    android:id="@+id/etvRegisterNameDCI"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="11dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:ems="10"
    android:hint="Name/DCI"
    android:inputType="textPersonName"
    android:visibility="invisible"
    app:layout_constraintBottom_toTopOf="@+id/etvRegisterEmail"
    app:layout_constraintHorizontal_bias="0.503"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent" />

<EditText
    android:id="@+id/etvRegisterEmail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="15dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:ems="10"
    android:hint="Email"
    android:inputType="textEmailAddress"
    android:visibility="invisible"
    app:layout_constraintBottom_toTopOf="@+id/etvRegisterPassword"
    app:layout_constraintHorizontal_bias="0.503"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent" />

<EditText
    android:id="@+id/etvRegisterPassword"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="14dp"
    android:ems="10"
    android:hint="Password"
    android:inputType="textPassword"
    android:visibility="invisible"
    app:layout_constraintBottom_toTopOf="@+id/btnRegisterRegister"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginRight="8dp"
    app:layout_constraintRight_toRightOf="parent" />

<Button
    android:id="@+id/btnRegisterRegister"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Register"
    android:visibility="invisible"
    tools:layout_constraintLeft_creator="1"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintTop_creator="1"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginRight="8dp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    android:layout_marginBottom="42dp" />



</android.support.constraint.ConstraintLayout>

【问题讨论】:

  • @Rotwang 这不是 android studio 的东西吗?我相信这个约束是专门为 android studio 设计的?
  • 没有。它是为 Android 制作的。 Android Studio 只是一个IDE。哪个无关

标签: android android-layout android-constraintlayout


【解决方案1】:

问题是您使用visibility="invisible" 隐藏您的视图,这会占用空间并将您的视图推到屏幕之外。尝试使用visibility="gone"

【讨论】:

  • 为什么会将它们推出视图?您可以看到它们的位置,它们位于文本视图下,有足够的空间。那么他们如何才能将它们推出屏幕呢?
  • 您可以尝试将它们更改为始终可见,看看它实际上是如何占用屏幕空间的。 DPI/字体大小在您的预览屏幕和实际设备上似乎有很大差异。
  • 这不是它,就像我认为屏幕保持不变但这些视图可见。仍然感谢您查看它:)
  • 当您将其更改为gone 时,屏幕是否保持不变而这些视图可见?它应该隐藏了所有视图,并使您的可见视图降到屏幕限制范围内。
  • 是的,它确实可以工作,直到它们再次可见,但它也会弄乱开始屏幕,因为一切都下降了很多,而不是它们在顶部它们在底部(登录部分)点击“链接”后,它会再次导致错误的屏幕布局。
猜你喜欢
  • 2018-06-30
  • 1970-01-01
  • 2018-03-15
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
相关资源
最近更新 更多