标签: android-constraintlayout

Bias 属性被忽略

我有一个简单的水平链接视图布局,具有 spread_inside 链样式。当我尝试使用偏差属性将视图移动到所需位置时,我发现偏差属性被忽略。

以下是布局供参考:

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white">

    <View
        android:id="@+id/view_1"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:background="@android:color/black"
        app:layout_constraintEnd_toStartOf="@id/view_2"
        app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <View
        android:id="@+id/view_2"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:background="@android:color/black"
        app:layout_constraintEnd_toStartOf="@id/view_3"
        app:layout_constraintStart_toEndOf="@id/view_1"
        app:layout_constraintTop_toTopOf="parent" />

    <View
        android:id="@+id/view_3"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:background="@android:color/black"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.2"
        app:layout_constraintStart_toEndOf="@id/view_2"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

在这里,我想使用layout_constraintHorizo​​ntal_bias属性将view_3移近view_2。我怎样才能做到这一点?

android android-constraintlayout constraint-layout-chains

1
推荐指数
1
解决办法
4369
查看次数

如何在包含宽度为“0dp”的视图的 ConstraintLayout 中将打包链居中?

我想将页面标题居中。标题可能看起来像(1) Dokument1(3) GreatDocument。我想要左右边距,60dp并且文档名称具有可变长度。当我使用wrap_content居中@+id/title效果很好时,但是边距不适用于长文档名称。当我使用0dp边距时,会受到尊重,但居中不起作用。

如何使 ConstraintLayout 中的打包链居中,同时具有动态长度和边距。

<android.support.constraint.ConstraintLayout
    android:id="@+id/top_bar_xml"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/open_brackets"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="("
        android:gravity="center_vertical"
        android:layout_marginStart="60dp"

        android:textSize="20sp"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintEnd_toStartOf="@id/page_count"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/page_count"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1"
        android:gravity="center_vertical"
        android:textSize="20sp"
        app:layout_constraintStart_toEndOf="@id/open_brackets"
        app:layout_constraintEnd_toStartOf="@id/close_brackets"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/close_brackets"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=") "
        android:gravity="center_vertical"
        android:textColor="@color/black"
        android:textSize="20sp"
        app:layout_constraintStart_toEndOf="@id/page_count"
        app:layout_constraintEnd_toStartOf="@id/title"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/title"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="60dp"
        android:text="DocumentTitle"
        android:textSize="20sp"
        android:gravity="center_vertical"
        android:ellipsize="end"
        app:layout_constraintStart_toEndOf="@+id/close_brackets"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

(我通过删除对页数和标题的 ViewModel 的引用来简化示例;该文档下面有其他具有较低边距的视图)

android android-constraintlayout constraint-layout-chains

1
推荐指数
1
解决办法
1227
查看次数

在 ConstraintLayout 中,当没有 `weight` 属性时, android:layout_width="0dp" 是什么意思?

我有这样的布局:

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlayGoogleMaterialIcons">

  <LinearLayout
      android:layout_height="wrap_content"
      android:layout_width="0dp">

...
Run Code Online (Sandbox Code Playgroud)

android:layout_width="0dp"不属于 的孩子 是什么意思LinearLayout

android:layout_width="0dp"没有属性的时候是什么意思weight

android android-layout-weight android-constraintlayout

1
推荐指数
1
解决办法
5481
查看次数

将最大视图的左侧与约束布局对齐

嗨,我正在尝试查看时间表。如果用户设置为显示 24 小时或不显示,则开放时间的格式会发生变化。有一天商店关门了。字符串 Closed 是动态的,它每天都可能发生,来自 VM.days.get(X).time

这就是我目前得到的: 无 24 小时制 采用 24 小时格式

我想将关闭时间与小时左侧对齐。

这是我的 ConstraintLayout

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="@dimen/base_space">

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/small_space"
        android:text="@{VM.title}"
        android:textStyle="bold"
        tools:text="Heures de la semaine" />

    <android.support.constraint.Barrier
        android:id="@+id/barrier"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:barrierDirection="start"
        app:constraint_referenced_ids="first_time,second_time,third_time,fourth_time,fifth_time,sixth_time" />

    <TextView
        android:id="@+id/first_day"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@{VM.days.get(0).day}"
        android:textColor="@{VM.days.get(0).highlight ? @color/red : @color/gray}"
        app:isBold="@{VM.days.get(0).isBold}"
        app:layout_constraintTop_toBottomOf="@id/title"
        tools:text="Sunday" />

    <TextView
        android:id="@+id/first_time"
        app:layout_constraintLeft_toLeftOf="@+id/barrier"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@{VM.days.get(0).time}"
        android:textColor="@{VM.days.get(0).highlight ? @color/red : @color/gray}"
        app:isBold="@{VM.days.get(0).isBold}"
        app:layout_constraintBottom_toBottomOf="@+id/first_day"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@+id/barrier"
        app:layout_constraintTop_toTopOf="@+id/first_day"
        tools:text="8:30 AM - 9:00 PM" />

    <TextView
        android:id="@+id/second_day"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@{VM.days.get(1).day}"
        android:textColor="@{VM.days.get(1).highlight ? @color/red : @color/gray}"
        app:isBold="@{VM.days.get(1).isBold}" …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-constraintlayout

1
推荐指数
1
解决办法
1068
查看次数

有没有适合原生 Android 开发的 SafeArea Widget?

我试图在有缺口的 Android 设备上占据尽可能多的可用空间。在Flutter开发过程中,有一个名为的小部件SafeArea,它会根据设备是否有缺口自动调整您的视图。即使在iOS开发中每当我们添加constraintsusing时storyboard,我们也可以根据SafeArea. 但我在 Native Android 开发中找不到类似的东西。

在我的styles.xmlv28 中,我添加了如下内容

 <style name="TPAFTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> 
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item> 
        <item name="android:windowFullscreen">true</item> 
        <item name="android:windowContentOverlay">@null</item> 
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> 
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">true</item>
    </style>  
Run Code Online (Sandbox Code Playgroud)

但是是否可以在布局文件本身中检测设备是否有Notch并据此调整布局。我正在Constraintlayout我的应用程序中使用。由于我的应用程序顶部有图像,如果设备顶部有凹口,图像就会被裁剪。任何帮助,将不胜感激。

xml android android-constraintlayout

1
推荐指数
1
解决办法
2280
查看次数

ConstraintLayout 内的对齐/换行

我有 3 个水平放置的文本视图。最左边的和最右边的尺寸是固定的,但中间的长度可以有很大变化。像这样的东西:

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

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="16dp">

        <TextView
            android:id="@+id/left"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingEnd="8dp"
            android:text="LEFT"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/message"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:paddingEnd="8dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/right"
            app:layout_constraintStart_toEndOf="@+id/left"
            app:layout_constraintTop_toTopOf="parent"
            tools:text="@tools:sample/lorem/random" />

        <TextView
            android:id="@+id/right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="RIGHT"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/message"
            app:layout_constraintTop_toTopOf="parent"
            tools:visibility="visible" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

这会产生以下布局:

很长的消息

但如果我们中间有短文本,如下所示:

tools:text="@tools:sample/lorem"
Run Code Online (Sandbox Code Playgroud)

它将看起来:

短消息

最右边的视图“粘”在最后。

我希望它遵循中间视图,如下所示:

所需的布局

如何才能实现呢?

android android-constraintlayout

1
推荐指数
1
解决办法
1220
查看次数

ConstraintLayout Slide Transition 动画在动画结束之前显示视图的完整高度

我有以下活动和布局:

import android.os.Bundle
import android.view.Gravity
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.transition.Slide
import androidx.transition.TransitionManager
import com.tests.playground.R


class ConstraintLayoutTransitionActivity : AppCompatActivity() {

    private val rootView: ConstraintLayout by lazy { findViewById(R.id.root) }
    private val bottomBlueView: View by lazy { findViewById(R.id.bottomBlue) }
    private val switchButton: View by lazy { findViewById(R.id.switchButton) }
    private var isBottomBlueViewShowing = true

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_constraint_layout_transition)

        switchButton.setOnClickListener(::onSwitchButtonClicked)
    }

    @Synchronized
    private fun onSwitchButtonClicked(view: View) {
        isBottomBlueViewShowing = !isBottomBlueViewShowing

        val constraintSet = ConstraintSet()
        constraintSet.clone(rootView)

        val …
Run Code Online (Sandbox Code Playgroud)

android android-transitions android-constraintlayout constraintset

1
推荐指数
1
解决办法
1686
查看次数

安卓。ConstraintLayout:约束结束不起作用

我需要使用 来创建链ConstraintLayout。我希望将 TextView 附加到左侧,文本后紧跟一个ImageView,另一个ImageView附加到屏幕的右侧。看一个例子。

在此输入图像描述

如果TextView包含长文本,我需要将文本转到另一行。也就是说,TextView不与右侧的图像视图重叠,但仅限于边距。看一个例子。

在此输入图像描述

这是我的代码:

<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="wrap_content"
    tools:ignore="MissingPrefix">

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/text"
        android:textColor="@color/black"
        android:textSize="@dimen/text_size_14"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0" />

    <ImageView
        android:id="@+id/ivFirst"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="16dp"
        android:src="@drawable/ic_first"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@id/ivSecond"
        app:layout_constraintHorizontal_bias="0"
        app:layout_constraintStart_toEndOf="@id/tvTitle"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0" />

    <ImageView
        android:id="@+id/ivSecond"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_second"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0" />
</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

如果文本不长,则一切正常,但如果文本很长,则它会叠加在屏幕上ImageView并超出屏幕。我尝试使用链条但没有任何效果。请帮我。

android margins chain android-layout android-constraintlayout

1
推荐指数
1
解决办法
2022
查看次数

相对于右侧项目的Android ConstraintLayout宽度

在iOS中我可以在项目之间设置空格,我如何在Android中实现这一点?

例如:

我希望TextView在屏幕左侧有一个固定在父屏幕左边缘和TextView屏幕右侧的屏幕,固定在父屏幕的右边缘,两者都在同一行.

现在我希望左边TextView的宽度尽可能宽,但左边TextView和右边的间距最小为16dp TextView.

我希望这是可以理解的.

android constraints textview android-constraintlayout

0
推荐指数
1
解决办法
3033
查看次数

找不到显示属性'android:layout_constraintWidth_percent'的Android约束布局

我对这个错误进行了很多搜索,但最终看到每个人都建议卸载android studio并用我认为不可行的所有sdk工作重新安装它。我们如何才能以一种体面的方式消除此错误,如果有人已经给出了正确的答案,请向我介绍答案。

xml android android-layout android-constraintlayout

0
推荐指数
1
解决办法
2716
查看次数