[英]Trying to set the width of an imageView to match the width of a TextView
I'm trying to make a chat, and I want each message to have a background image that matches the text sizes.我正在尝试聊天,我希望每条消息都有一个与文本大小匹配的背景图像。
This is my xml:这是我的 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>
My kt Adapter for the Chat:我的聊天 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;
}
}
As you can see i set the bg width to the measuredWidth of the text but it doesn't work as the view hasn't been measured yet.如您所见,我将 bg 宽度设置为文本的测量宽度,但它不起作用,因为尚未测量视图。 i don't know how to fix it as I don't have a determinate number of messages so i can't do a for when the view has been created我不知道如何修复它,因为我没有确定数量的消息,所以我无法在创建视图时执行
If you want to use imageView
as background , this is wrong , you can use background
in your relativeLayout
like this :如果你想使用imageView
作为背景,这是错误的,你可以像这样在你的relativeLayout
使用background
:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_textsms_black_24dp"
>
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.