- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用数据绑定(bind)动态设置 2 个 ImageView
的比例。如果标志为真,则第二个 ImageView
的 (B) 可见性设置为消失,第一个 (A) 应以 16:9
格式显示并展开以填充 parent 的宽度。如果两个 View 都应该是可见的,则它们应该是 1:1
并且并排显示。
问题是左侧 ImageView A 从不显示。使用布局检查器,我可以验证它是否存在并具有宽度,但没有高度。
我错过了什么吗? B 按预期显示。如果我在 A 上手动设置比率,它会正确显示。
我的绑定(bind)看起来像这样:
@BindingAdapter("imageRatio")
fun setConstraintRatio(view: ImageView, ratio: String) {
val constraintLayout = view.parent as ConstraintLayout
val constraintSet = ConstraintSet()
constraintSet.clone(constraintLayout)
constraintSet.setDimensionRatio(view.id, ratio)
constraintLayout.setConstraintSet(constraintSet)
}
格式化程序:
val dimensionRatio: String
get() {
return if (showB) "1:1"
else "H,16:9"
}
我的布局是这样的:
<ImageView
android:id="@+id/card_image_a"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp" android:scaleType="centerCrop"
app:imageRatio="@{formatter.dimensionRatio}"
app:layout_constraintEnd_toStartOf="@id/card_image_b"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/divider"
android:visibility="visible" />
<ImageView
android:id="@+id/card_image_b"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:scaleType="centerCrop"
app:imageRatio="@{formatter.dimensionRatio}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/card_image_a"
app:layout_constraintTop_toBottomOf="@id/divider"
app:visibleOrGone="@{formatter.showImageB}"
tools:visibility="visible" />
最佳答案
经过一些测试,我意识到你的布局已经布置好,你应该使用 constraintSet.applyTo(constraintLayout)
,如下所示:
@BindingAdapter("imageRatio")
fun setConstraintRatio(view: ImageView, ratio: String) {
val constraintLayout = view.parent as ConstraintLayout
val constraintSet = ConstraintSet()
constraintSet.clone(constraintLayout)
constraintSet.setDimensionRatio(view.id, ratio)
constraintSet.applyTo(constraintLayout)
}
此外,我一直看到 DimensionRatio
方向字母是小写的(可能是稍后发现的另一个问题)。因此,为了以防万一,请更改您的 Formatter:
val dimensionRatio: String
get() {
return if (showB) "1:1"
else "h,16:9"
}
希望这能解决问题!
关于android - ConstraintLayout Ratio 绑定(bind)有宽度但没有高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55910365/
我正在开发一个 Android 库,这个库有一些布局 Activity 。 在布局中,我有下一个代码 ... Make sure you have correct i
我想以编程方式将一个 ConstraintLayout 放入另一个 ConstraintLayout 中。但是,如果我按照之前使用 RelativeLayout 的方式对其进行膨胀,它不会显示。 这是
我在我的布局中使用 androidx.constraintlayout.widget.ConstraintLayout 并且它不显示链,我也不能拖动任何小部件。我只需键入要使用的约束。 这是 and
我注意到我可以注释掉 implementation 'androidx.constraintlayout:constraintlayout:2.0.4'尽管我在我的应用程序中使用了 Constrain
我尝试以编程方式添加 ConstraintLayout。它在工作,但 WRAP_CONTENT 不工作。布局始终为 MATCH_PARENT。 Android 开发者页面没有为 ConstraintL
使用 Android Studio 菜单选项 Refactor -> Refactor to Androidx...迁移到 Androidx 包后... 我收到以下错误: Error inflatin
我正在尝试学习 Android 开发,但问题是我的应用程序每次尝试运行时都会崩溃,并且在 logcat 中出现以下错误: 2019-06-30 16:17:18.198 5317-5317/? E/e
我刚刚通过 Android Studio 菜单选项 重构 -> 重构到 AndroidX 迁移到 androidx 我收到以下错误: android.view.InflateException: Bi
我遇到一个错误,ConstraintLayout 中存在空对象引用 Logcat E/UncaughtException: java.lang.NullPointerException: Attemp
如问题标题所示,我已经搜索了我的问题的答案,并找到了 Error inflating class androidx.constraintlayout.ConstraintLayout after mi
因此,我更新了我的 gradle 文件,我的应用开始崩溃并出现一些奇怪的错误。它开始莫名其妙地崩溃,而且我的 java 类中的抽屉导航代码也出现了错误,这是我以前没有遇到过的。 我已经尝试使用我的版本
当我尝试使用 XML 在覆盖中插入 Compose(在其他应用程序上绘制)时,我得到了这个异常: java.lang.IllegalStateException: ViewTreeLifecycleO
我正在尝试通过 CodingInFlow 在 YouTube 上关注 Android Studio 开发的播放列表。 我正在尝试关注此视频,但遇到了问题... https://www.youtube.
在android studio SDK工具中有两个ConstraintLayout选项,一个是ConstraintLayout for android,另一个是Solver for Constrain
我有一个非常令人沮丧的错误,我无法解释。我创建了一个 Android 应用程序,它使用 Androidx AppCompat 来使其与旧版本兼容。这是我的主要 Activity 布局文件:{Andro
免责声明:我知道 Compose 刚刚进入 alpha01,因此我不希望每个功能可用。但是,特定布局案例的布局和处理是恕我直言的一个重要主题应该尽早解决 😉。 当前基于 View Constrain
Attempt to invoke virtual method 'boolean androidx.constraintlayout.solver.widgets.ConstraintWidgetC
我正在尝试自己学习android开发,因为我试图使用按钮和 TextView 制作一个简单的文本更改应用程序,但是当使用USB在我自己的手机上运行它时,不幸的是,它开始显示该应用程序已经停止。如果您不
我遇到了一个奇怪的问题:layout.xml 我正在尝试将一个小部件连接到我的屏障。问题是,当我尝试将我的小部件的 END 与 barrier 连接时,没有
所以我有一个 RecycleView 的布局文件,它具有可展开/可折叠的 View 。 点击标题会展开/折叠额外的数据。在编辑器中一切看起来都很好。但是,它会有一个类似于 layout_marginB
我是一名优秀的程序员,十分优秀!