【问题标题】:ListView inside constraint view gets clipped and not scrolling约束视图内的 ListView 被剪裁而不滚动
【发布时间】:2018-01-12 06:37:32
【问题描述】:

我的 ConstraintLayout 中有一个列表视图,我读到它应该可以自动滚动,但是列表在底部被截断,还有更多的项目要显示并且它不可滚动,我不知道我是否设置了一些属性错误,或者我必须为列表视图添加一些内容才能滚动??

这是我的代码

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <TextView
        android:id="@+id/special_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:layout_marginLeft="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Today is:"
        android:textSize="24sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        android:visibility="gone"
        app:layout_constraintTop_toTopOf="parent"/>

    <TextView
        android:id="@+id/date_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:layout_marginLeft="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="The date is:"
        android:textSize="24sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/special_text_view"/>



     <TextView
            android:id="@+id/oc_text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/white"
            android:layout_marginLeft="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:text="The day of the omer is:"
            android:visibility="gone"
            android:textSize="24sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/date_text_view"/>

    <ListView
            android:id="@+id/list_view"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginTop="24dp"
            android:layout_marginBottom="24dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@id/oc_text_view"
            app:layout_constraintBottom_toBottomOf="parent">
    </ListView>

    </android.support.constraint.ConstraintLayout>

谢谢

【问题讨论】:

  • 很抱歉刚刚意识到滚动条正在工作,只是底部导航栏正在剪裁底部元素,但是当我添加更多项目时它会滚动。

标签: android android-layout listview android-constraintlayout


【解决方案1】:

你需要关闭链条,像这样:

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <TextView
        android:id="@+id/special_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Today is:"
        android:textColor="@android:color/white"
        android:textSize="24sp"
        android:visibility="gone"
        app:layout_constraintBottom_toTopOf="@id/date_text_view"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/date_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="The date is:"
        android:textColor="@android:color/white"
        android:textSize="24sp"
        app:layout_constraintBottom_toTopOf="@id/oc_text_view"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/special_text_view" />


    <TextView
        android:id="@+id/oc_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="The day of the omer is:"
        android:textColor="@android:color/white"
        android:textSize="24sp"
        android:visibility="gone"
        app:layout_constraintBottom_toTopOf="@id/list_view"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/date_text_view" />

    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginBottom="24dp"
        android:layout_marginTop="24dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/oc_text_view">
    </ListView>
</android.support.constraint.ConstraintLayout>

【讨论】:

  • 看不到你改变了什么
  • 它是否有效? (我改变了很多属性。)
  • 对于其他想知道的人来说,这里的关键是 ListView 中的app:layout_constraintBottom_toBottomOf="parent"
【解决方案2】:

在使用 ConstraintLayout 时,您必须为 constraintTop、constraintRight、constraintBottom、constraintLeft 或 constraintStart 和 constraintEnd 添加约束。请约束您所有四个常量布局(或使用约束开始或结束)。然后只有它按预期工作

use below code in list view:
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"

供参考: https://developer.android.com/training/constraint-layout/index.htmlenter link description here

【讨论】:

  • 您好刚刚尝试添加缺少的约束并更新了帖子仍然不起作用。
【解决方案3】:

试试这个...

在这里,我在 ListView 中填充了 10 个项目。见附件结果。

<?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.silambarasan.test.MainActivity"
>

 <TextView
     android:id="@+id/special_text_view"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginLeft="8dp"
     android:layout_marginStart="8dp"
     android:layout_marginTop="8dp"
     android:text="Today is:"
     android:textColor="@android:color/black"
     android:textSize="24sp"
     android:visibility="visible"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintTop_toTopOf="parent"
     />

 <TextView
     android:id="@+id/date_text_view"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginBottom="8dp"
     android:layout_marginLeft="8dp"
     android:layout_marginStart="8dp"
     android:layout_marginTop="8dp"
     android:text="The date is:"
     android:textColor="@android:color/black"
     android:textSize="24sp"
     app:layout_constraintBottom_toTopOf="@+id/oc_text_view"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintTop_toBottomOf="@id/special_text_view"
     />


  <TextView
     android:id="@+id/oc_text_view"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginLeft="8dp"
     android:layout_marginStart="8dp"
     android:layout_marginTop="16dp"
     android:text="The day of the omer is:"
     android:textColor="@android:color/black"
     android:textSize="24sp"
     android:visibility="visible"
     app:layout_constraintBottom_toTopOf="@+id/guideline1"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintHorizontal_bias="0.47"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintTop_toBottomOf="@id/date_text_view"
     />

  <ListView
     android:id="@+id/list_view"
     android:layout_width="match_parent"
     android:layout_height="0dp"
     android:layout_marginTop="8dp"
     app:layout_constraintBottom_toBottomOf="parent"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintHorizontal_bias="0.0"
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintTop_toTopOf="@+id/guideline1"
     app:layout_constraintVertical_bias="1.0"
     >
  </ListView>

  <android.support.constraint.Guideline
      android:id="@+id/guideline1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:orientation="horizontal"
      app:layout_constraintGuide_percent="0.3"
     />

  </android.support.constraint.ConstraintLayout>

结果:

【讨论】:

  • 嗨,谢谢,我刚刚对我的问题添加了一条评论,我意识到它一直在工作,只是没有足够的元素,并且被导航栏剪掉了。
【解决方案4】:

使用androidx.constraintlayout.widget.ConstraintLayout,你可以试试这个:

<?xml version="1.0" encoding="utf-8"?>
<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="match_parent"
    >

<TextView
    android:id="@+id/special_text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text="Today is:"
    android:textColor="@android:color/black"
    android:textSize="24sp"
    android:visibility="visible"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    />

<TextView
    android:id="@+id/date_text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text="The date is:"
    android:textColor="@android:color/black"
    android:textSize="24sp"
    app:layout_constraintBottom_toTopOf="@+id/oc_text_view"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/special_text_view"
    />


<TextView
    android:id="@+id/oc_text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="16dp"
    android:text="The day of the omer is:"
    android:textColor="@android:color/black"
    android:textSize="24sp"
    android:visibility="visible"
    app:layout_constraintBottom_toTopOf="@+id/guideline1"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.47"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/date_text_view"
    />

<ListView
    android:id="@+id/list_view"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/guideline1"
    app:layout_constraintVertical_bias="1.0"
    >
</ListView>

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.3"
    />

</androidx.constraintlayout.widget.ConstraintLayout>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多