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".

actual style of background

result without coding

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

Popular posts from this blog

resizing Telegram inline keyboard -

command line - How can a Python program background itself? -

php - "cURL error 28: Resolving timed out" on Wordpress on Azure App Service on Linux -