Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid ListView rows in ScrollView not fully displayed - clipped
    primarykey
    data
    text
    <p>I encountered a problem when embedding a ListView inside a ScrollView, or at least that's where I guess the problem comes from. The ListView element is a fairly simple one:</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/item_root" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/general_background_list_middle" android:paddingTop="4dp" android:paddingBottom="4dp" android:paddingRight="0dp" android:paddingLeft="0dp"&gt; &lt;ImageView android:id="@+id/chat_friends_avatar" android:layout_width="45dp" android:layout_height="45dp" android:layout_marginLeft="7dp" android:layout_marginRight="8dp" android:paddingRight="0dp" android:paddingLeft="0dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:src="@drawable/friends_icon_avatar_default"/&gt; &lt;TextView android:id="@+id/chat_message_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_toRightOf="@id/chat_friends_avatar" android:layout_alignParentTop="true" android:layout_marginRight="35dp" android:maxLines="10" android:textSize="12dp"/&gt; &lt;TextView android:id="@+id/chat_friend_name" android:layout_width="140dp" android:layout_height="wrap_content" android:layout_marginTop="3dp" style="@style/SubText" android:layout_toRightOf="@id/chat_friends_avatar" android:layout_below="@id/chat_message_text" /&gt; &lt;TextView android:id="@+id/chat_message_time" android:layout_width="80dp" android:layout_height="wrap_content" android:layout_marginRight="8dp" android:layout_marginTop="3dp" style="@style/SubText" android:layout_alignParentRight="true" android:layout_below="@id/chat_message_text" /&gt; &lt;/RelativeLayout&gt; </code></pre> <p>However, when I embed a list of such elements in a ScrollView, in between some other elements, the rows are not fully displayed, they are clipped (see image below) if the text is wrapped. The ListView is instantiated as follows in the ScrollView:</p> <pre><code>&lt;ListView android:id="@+id/info_chat_listview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:cacheColorHint="@color/frame_background_color" android:clickable="false" android:divider="@null" android:footerDividersEnabled="false" android:focusable="false" &gt; &lt;/ListView&gt; </code></pre> <p>If the height of the ListView is set to "wrap_content" only the first element is shown. That's why I'm using a method to calculate the height of the rows of the list:</p> <pre><code>private int getCommentsListHeight() { if (mChatAdapter != null &amp;&amp; mChatAdapter.getCount() != 0) { if (mChatList != null) {// &amp;&amp; mCommentsListItemHeight == 0) { mCommentsListItemHeight = 0; for (int i = 0; i &lt; mChatAdapter.getCount(); i++) { // Get view item height View viewItem = mChatAdapter .getView(i, new View(OnAirActivity.this), mChatList); viewItem.measure(0, 0); Logger.d(LOGTAG, "View " + i + " measured height = " + viewItem.getMeasuredHeight()); mCommentsListItemHeight += viewItem.getMeasuredHeight(); } } //return mChatAdapter.getCount() * mCommentsListItemHeight; return mCommentsListItemHeight; } else { return 0; } } </code></pre> <p>Unfortunately, in case when the text inside the TextView is wrapped, even over several lines, the height of the row element returned by the getMeasuredHeight() method is constant. Also the getLineCount() called on the TextView inside the row element returns 1 even if the text is wrapped.</p> <p>On the other hand, if this ListView is embedded in a LinearLayout, everything works fine and the full list is displayed with no clipping.</p> <p>Do you have any suggestions as to what might be wrong here? I really don't like the idea of manually measuring the height of the list elements and it apparently doesn't work but why can't android nicely stretch the ListView inside the ScrollView to fit it all in there?</p> <p>Clipped list: <img src="https://i.stack.imgur.com/zKNWB.png" alt="see image"></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload