【问题标题】:Programmatically spread linearLayouts inside a constraint layout以编程方式在约束布局内传播线性布局
【发布时间】:2019-07-30 18:54:51
【问题描述】:

我在以编程方式将线性布局 listItem 添加到约束布局时遇到问题。我想要的是在约束布局中水平均匀分布 x 个 listItem。

约束布局包含一个线性布局@+id/list,我在其中以编程方式添加视图listItem,但行为不是我所期望的。

当我在运行时执行此操作时,似乎 listItem 已设置 layout_width="wrap_content" 并将我添加的所有视图压缩到约束视图的左侧,它们之间没有空气。

如果我在约束 xml 文件中添加多个 listItem,它的行为与预期一样 - 均匀分布 listItem,以便它们填充约束视图的整个宽度。每个 listItem 获得相同数量的空间。

我做错了什么?

约束布局:

<?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="wrap_content">
<LinearLayout
    android:id="@+id/heading"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toTopOf="parent">
    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/na"
        android:textColor="@color/black"
        android:textSize="@dimen/text_size_normal"
        android:textStyle="bold"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>
    <TextView
        android:id="@+id/wtu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/na"
        android:textColor="@color/black"
        android:textSize="@dimen/text_size_normal"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toRightOf="@+id/emergency_drugname" />
</LinearLayout>
<LinearLayout
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/heading">
</LinearLayout>
</android.support.constraint.ConstraintLayout>

线性布局列表项

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listItem"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_weight="1">
    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/na"
        android:textColor="@color/black"
        android:textSize="@dimen/text_size_normal"
        android:textStyle="bold" />
    <TextView
        android:id="@+id/dose"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/na"
        android:textColor="#006600"
        android:textSize="@dimen/text_size_normal"
        android:textStyle="bold" />
    <TextView
        android:id="@+id/total_dose"
        android:visibility="gone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/na"
        android:textColor="#006600"
        android:textSize="@dimen/text_size_normal"
        android:textStyle="bold" />
</LinearLayout>

【问题讨论】:

  • 听起来问题出在您的代码中,因此您需要在问题中显示代码。您是 setting the constraints 来添加您要添加​​的视图吗?
  • 我没有以编程方式设置约束设置。当我在约束 XML 文件 etiher 中使用 listItem 线性布局时,我也没有这样做——这很有效。但是在我的头撞在键盘上几个小时后,我选择了另一种方法。也许不是最好的解决方案,但它确实有效。
  • 请添加你的java代码来增加布局
  • 这次我采用了另一种方法,但我没有保存用于以编程方式在 CL 中传播 LL 的代码。我很可能稍后再试... :-)

标签: android android-linearlayout android-constraintlayout


【解决方案1】:

尝试将此行添加到您的项目:

android:layout_width="fill_parent"

而不是:

    android:layout_width="0dp"

希望对你有用

【讨论】:

  • 为了使X个listItem均匀分布,layout_width应该设置为0dp,layout_weigth设置为1。如果我使用fill_parent,行为将与我想要的不同。
猜你喜欢
  • 2012-10-01
  • 2018-04-08
  • 2017-01-10
  • 2019-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 2015-10-17
相关资源
最近更新 更多