Articles of android constraintlayout

ConstraintLayout边距不起作用

如果我限制的视图的可见性marginTop则使用下面的xml将忽略marginTop 。 这种情况发生在最新版本的lib版本com.android.support.constraint:constraint-layout:1.0.0-beta4 例: tvMessage和ivCommentImage是visible – tvMessage和ivCommentImage上的16dp顶部边距工作正常。 如果ivCommentImage gone ,边距将被忽略。 <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="16dp"> <!– some more views here –> <TextView android:id="@+id/tvMessage" style="@style/SocialFeed.Description" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" android:layout_marginStart="16dp" android:layout_marginTop="16dp" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/ivProfile" app:layout_goneMarginTop="0dp" tools:text="@string/lorem_ipsum_140chars"/> <android.support.v7.widget.AppCompatImageView android:id="@+id/ivCommentImage" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:adjustViewBounds="true" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/tvMessage" app:layout_goneMarginTop="0dp" /> <android.support.constraint.Guideline android:id="@+id/gCenter" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" […]

Android使用包含标签在ConstraintLayout中添加其他布局

我使用ConstraintLayout做了一些简单的testing应用程序。 但是我有一些问题。 这是我的代码 activity_main.xml中 <?xml version="1.0" encoding="utf-8"?> <layout 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.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.user.myapplication.activity.MainActivity"> <Button android:id="@+id/btn_launch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginTop="16dp" android:text="launch" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/text_view" android:layout_width="100dp" android:layout_height="50dp" android:layout_marginEnd="16dp" android:layout_marginTop="16dp" android:text="Hello World!" app:layout_constraintHorizontal_bias="1" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/btn_launch" /> <include layout="@layout/content_main" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/text_view" /> </android.support.constraint.ConstraintLayout> content_main.xml <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" […]

Android ConstraintLayout – 将一个视图置于另一个视图之上

我试图添加一个Button的ProgressBar (都在一个ConstraintLayout )。 <Button android:id="@+id/sign_in_button" android:layout_width="280dp" android:layout_height="75dp" android:layout_marginBottom="75dp" android:layout_marginTop="50dp" android:text="@string/sign_in" android:textColor="@color/white" android:textSize="22sp" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/passwordEditText" app:layout_constraintVertical_bias="0.0"/> <ProgressBar android:id="@+id/progressBar" style="?android:attr/progressBarStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="@+id/sign_in_button" android:layout_marginTop="8dp" app:layout_constraintBottom_toBottomOf="@+id/sign_in_button" android:layout_marginBottom="8dp" app:layout_constraintVertical_bias="0.5" android:layout_marginLeft="8dp" app:layout_constraintLeft_toLeftOf="@+id/sign_in_button" android:layout_marginRight="8dp" app:layout_constraintRight_toRightOf="@+id/sign_in_button"/> 但即使在onCreate的ProgressBar上调用bringToFront之后,它始终停留在Button 。 ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar); progressBar.bringToFront();

使RecyclerView的高度在约束布局中的“wrap_content”

我试图设置wrap_content的回收站视图的高度,并使其尊重,但它会超过布局上的其他小部件。 我现在能做什么? <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white"> <TextView android:id="@+id/tvPastRounds" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="16dp" android:layout_marginTop="0dp" android:text="Past Rounds" android:textColor="@color/text_color_black" android:textSize="16sp" app:layout_constraintLeft_toLeftOf="parent"/> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintHeight_default="wrap" android:layout_marginBottom="24dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:layout_marginTop="16dp" android:clipChildren="true" android:maxHeight="150dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="@+id/tvPastRounds" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/tvPastRounds" app:layout_constraintVertical_bias="0.0"/> </android.support.constraint.ConstraintLayout>

如何在ConstraintLayout中组合多个视图

我在ConstraintLayout中添加了3个button。 我已经添加了一个button来禁用或启用这些button。 如果我使用正常的LinearLayout。 我可以把所有的button放在一个线性布局,并启用或禁用该特定的布局。 但是我正在使用ConstraintLayout。 所以我需要禁用或启用所有这些button,我相信ConstraintLayout中必须有一种方法来分组不同的视图。 请指导我如何在ConstriantLayout中对视图进行分组 <Button android:text="Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button" android:layout_marginTop="16dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="16dp" android:layout_marginStart="16dp" app:layout_constraintLeft_toLeftOf="parent" android:layout_marginLeft="16dp" /> <Button android:text="Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button2" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="16dp" android:layout_marginStart="8dp" app:layout_constraintLeft_toRightOf="@+id/button" android:layout_marginLeft="8dp" app:layout_constraintTop_toTopOf="@+id/button" /> <Button android:text="Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button3" app:layout_constraintTop_toTopOf="@+id/button2" android:layout_marginEnd="16dp" app:layout_constraintRight_toRightOf="parent" android:layout_marginRight="16dp" android:layout_marginStart="8dp" app:layout_constraintLeft_toRightOf="@+id/button2" android:layout_marginLeft="8dp" />

特拉维斯CI失败,因为不能接受许可证限制布局

在我写这个问题之前,我已经search了同样的问题,他们做出口许可证,因为仍然使用约束布局的alpha版本。 但是现在android已经发布了稳定版本的约束布局。 我尝试了很多设置,但仍然失败 我最新的.travis.yml language: android jdk: oraclejdk8 android: components: – platform-tools – tools # to get the new `repository-11.xml` – tools # see https://github.com/travis-ci/travis-ci/issues/6040#issuecomment-219367943) – build-tools-25.0.0 – android-25 # Additional components – extra-google-google_play_services – extra-google-m2repository – extra-android-m2repository licenses: – 'android-sdk-preview-license-52d11cd2' – 'android-sdk-license-.+' – 'google-gdk-license-.+' script: – ./gradlew clean build 这是我的build.gradle apply plugin: 'com.android.application' android […]

如何在ConstraintLayout中的两个视图中的最低位置?

我有两个标题视图HeaderViewA和HeaderViewB 。 这些视图可以具有任何visible或visible组合。 我需要将BigView 放在 HeaderViewA / HeaderViewB的最低位置。 这可能没有嵌套在ConstraintLayout ?

约束布局,而不是相对布局

在新的Android Studio 2.2中引入了约束布局,我已经在这里和这里search和阅读了这个新的布局。 在这个链接中,我已经阅读了约束与相对布局之间的区别,但仍然存在一些问题: 如上所述,我们可以用ConstraintLayout完全替代RelativeLayout吗? 旧版本的设备是否可以支持ConstraintLayout ? 为了用ConstraintLayoutdevise应用程序,我们必须更新到Android Studio 2.2? 通过使用ConstraintLayout我们不需要为所有屏幕分辨率编写多个dimens.xml文件来获得响应式应用程序?

删除水平进度条中的填充

在我们的应用程序中,我们需要一个不确定的进度条,如下所示: 我们可以通过在ProgressBar上设置负边距来实现这一点,如下所示: <ProgressBar android:id="@+id/progressbar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:indeterminate="true" android:marginTop="-7dp" android:visibility="@{loading ? View.VISIBLE : View.GONE}" /> 但是因为ConstraintLayout不支持负边距,所以看起来像这样: 好的,负边缘是一个黑客。 我们用一个不同的黑客代替它吧? 我们来介绍一下我们的自定义视图CustomProgressBar ,它扩展了ProgressBar并覆盖了它的onDraw方法,如下所示: @Override protected void onDraw(Canvas canvas) { int marginTop = dpToPx(7); canvas.translate(0, -marginTop); super.onDraw(canvas); } 但是,所有这些闻起来都像糟糕的代码。 必须有更好的解决scheme! 你会推荐什么?

TextView的颜色在带有ConstraintLayout的真实设备上显示为白色

我一直在用ConstraintLayout ,到目前为止,除了现在遇到一个特殊的问题之外,我已经非常喜欢它了 。 相同的布局,如果我devise使用RelativeLayout显示包含的TextView的颜色作为默认的文本颜色(灰色),但与ConstraintLayout ,它显示白色。 这发生在一个真实的设备以及与Android 5.0仿真器,但不是仿真器(7.0)。 有谁知道,为什么会发生这种情况? 此外,显而易见的解决scheme似乎是在布局中将TextView的颜色手动设置为它应该是的样式,但是这似乎是一种解决scheme。 我有兴趣知道,为什么这首先发生,如果这个黑客是唯一的解决scheme ? ( 我更喜欢不通过在TextView上强制颜色来修复它,因为在Android 7.0上的行为是正确的 ) 编辑:忘了提及布局编辑器显示他们都黑/灰,这也是一个提示,实际的颜色不应该是白色的。 为了您的参考,这里是大致相同的两个布局( 其中一个是Button ,另一个是TextView而不是Button ),其中一个是错误的。 显示为白色的布局(焦点问题): <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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="wrap_content" android:layout_marginTop="4dp" android:layout_marginBottom="4dp" android:layout_marginLeft="8dp" android:layout_marginStart="8dp" android:layout_marginRight="8dp" android:layout_marginEnd="8dp" android:background="@color/lightGrey"> <android.support.constraint.ConstraintLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:paddingBottom="10dp" android:elevation="2dp" android:id="@+id/constraintLayout"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintTop_toTopOf="parent" android:layout_marginLeft="16dp" android:layout_marginStart="16dp" android:layout_marginTop="16dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@+id/guideline" […]