Sebastian Ikaros Rizzo
Sebastian Ikaros Rizzo

Reputation: 260

Android ListView layout not expaind

I've a simple ListView with a custom adapter. I've modeled items layout with ConstraintLayout. Everything is working fine, except when a certain TextView contains a long text, making it going on the second row and overlapping the next text. How can I make the item to expand vertically, only when needed?

My list view:

<?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="org.altervista.realms.biomap.fragments.EditFragment">

    <ListView
        android:id="@+id/recordsListView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:fillViewport="true"
        android:divider="@drawable/list_divider"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

My adapter layout:

<?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"
    android:background="@drawable/record_row"
    android:longClickable="true"
    >


    <Button
        android:id="@+id/editRecordDeleteButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="8dp"
        android:background="@drawable/button"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        android:minHeight="40dp"
        android:minWidth="40dp"
        android:text="@string/icon_delete"
        android:textAppearance="@style/TextAppearance.AppCompat.Medium"
    />

    <TextView
        android:id="@+id/editRecordDate"
        android:text="21/06/2015"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="4dp"
    />

    <TextView
        android:id="@+id/editRecordSpecies"
        android:text="Russola Magnificens Russola Magnificens"
        android:textColor="#000000"
        android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/editRecordDate"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@+id/editRecordAbundance"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="4dp"
    />

    <TextView
        android:id="@+id/editRecordLocHab"
        android:text="Faggeta acidofila a Luzula Croce di Forcella Piccola"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginLeft="8dp"
        android:layout_marginBottom="4dp"
        app:layout_constraintRight_toLeftOf="@+id/editRecordDeleteButton"
        android:layout_marginRight="8dp"
        android:layout_marginTop="4dp"
        app:layout_constraintTop_toBottomOf="@+id/editRecordSpecies"
    />

    <TextView
        android:id="@+id/editRecordTime"
        android:text="14:44"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintRight_toLeftOf="@+id/editRecordDeleteButton"
        android:layout_marginRight="8dp"
        android:layout_marginTop="4dp"
    />

    <TextView
        android:id="@+id/editRecordAbundance"
        android:text="2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/editRecordTime"
        app:layout_constraintRight_toLeftOf="@+id/editRecordDeleteButton"
        android:layout_marginRight="8dp"
        android:layout_marginTop="4dp"
        android:layout_marginBottom="4dp"
    />

</android.support.constraint.ConstraintLayout>

How it looks now:

enter image description here

I'd like to have 3rd item (and 3rd item only) to expand vertically. Thank you!

Edit:

I've noticed that this problem occurs only if the text is slightly longer than the line. Using a longer text cause the TextView to expand, as expected.

It seems to me that it's using the parent width to decide when to expand the layout, whereas it's using the textview width to decide when to go on a new line.

Please notice that the XML for the images below is identical. I've only changed the text string.

enter image description here

Upvotes: 0

Views: 74

Answers (1)

ruben
ruben

Reputation: 1750

removing app:layout_constraintBottom_toBottomOf="parent" property from you editRecordLocHab textView solved the issue in my replicated code.

Upvotes: 2

Related Questions