Я пытаюсь создать чат и хочу, чтобы в каждом сообщении было фоновое изображение, соответствующее размеру текста.
Это мой xml:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/msgBg"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/ic_textsms_black_24dp"
>
</ImageView>
<TextView
android:id="@+id/textMSG"
android:layout_alignParentStart="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:layout_marginLeft="@dimen/margin_big"
android:text="example"
android:layout_weight="70"
android:textSize="@dimen/text_size_bigmedium"
>
</TextView>
</RelativeLayout>
Мой kt-адаптер для чата:
class ChatAdapter(var list :ArrayList<ChatMessage>):RecyclerView.Adapter<ChatAdapter.ViewHolder>(){
class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
val image = itemView.Profile
val text = itemView.textMSG
var bg = itemView.msgBg
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(com.example.gamecompanionAleixAzuela.R.layout.item_chat, parent, false)
return ViewHolder(view)
}
override fun getItemCount(): Int {
return list.count();
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.text.text = list[position].text
holder.bg.layoutParams.width = holder.text.measuredWidth;
holder.bg.layoutParams.height = holder.text.measuredHeight;
}
}
Как вы можете видеть, я установил ширину bg для measureWidth текста, но он не работает, так как вид еще не измерен. я не знаю, как это исправить, поскольку у меня нет определенного количества сообщений, поэтому я не могу сделать, когда представление было создано