android - Custom ListView set Background Drawable in XML doesnt work -
i'm getting frustrated this:
when define custom listview layout,
android studio doesn't keep background drawable set in there.
tried many things, , setting background programmatically doesn't work
since it's ignoring layout_width must set "wrap_content".
if me, i'd grateful !:)
edit:
i'm creating messenger , want display messages in similar way whatsapp, messages shown in listview. depending on message sent or received, items should aligned parentstart or parentend.
but more importantly, if message contains few chars, don't want listitem background fill entire screen, should set dynamically. thought achieve through setting wrap content in parent layout file.
files this:
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_alignparentend="true"> <linearlayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentend="true" android:layout_alignparenttop="true" android:layout_marginbottom="4dp" android:layout_margintop="4dp" tools:background="@drawable/background_message_sent"> //here textviews </linearlayout> </relativelayout>
here listviewadapter, set background
(@drawable/background_message_sent/received) programmatically.
however, covers entire width of listview, regardless of message length.
@override public view getview(int pos, view convertview, viewgroup parent) { int currentuserid = 1; int senderid = messagesarraylist.get(pos).getsenderid(); if (senderid == currentuserid){ view v = view.inflate(context, r.layout.layout_chat_message_sent, null); v.setbackgroundresource(r.drawable.background_message_sent); textview tvmessagetext = v.findviewbyid(r.id.tvmessagetext); textview tvtimestamp = v.findviewbyid(r.id.tvtimestamp); tvmessagetext.settext(messagesarraylist.get(pos).getmessagetext()); tvtimestamp.settext(messagesarraylist.get(pos).gettimestamp()); return v; } else { view v = view.inflate(context, r.layout.layout_chat_message_received, null); v.setbackgroundresource(r.drawable.background_message_received); textview tvmessagetext = v.findviewbyid(r.id.tvmessagetext); textview tvtimestamp = v.findviewbyid(r.id.tvtimestamp); tvmessagetext.settext(messagesarraylist.get(pos).getmessagetext()); tvtimestamp.settext(messagesarraylist.get(pos).gettimestamp()); return v; } }
well, after trying, got solution if comes point:
you have set background drawable directly each textview, not parent layouts. these 2 lines solved ^^
android:maxems="14" android:background="@drawable/background_message_sent" <textview android:id="@+id/tvmessagetext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginbottom="5dp" android:layout_marginend="0dp" android:layout_margintop="5dp" android:layout_weight="0.22" android:text="42456456456546" android:textcolor="@color/tentakelprimary" android:maxems="14" android:background="@drawable/background_message_sent"/>
Comments
Post a Comment