android - Gravity:End 没有以编程方式生效
问题描述
我提供gravity:end
了 xml,它显示在 Android Studio 的右侧。(结束)
但以编程方式不起作用。
layout_gravity:end
inchat_image
仅在 Android Studio 预览版中工作,但不能以编程方式工作。- 更改
item_parent
为RelativeLayout
但不工作和相同LinearLayout
gravity
当我在带有属性的 xml 中看到正确的预览时,或者layout_gravity
如果可能的话,我所做的所有可能的情况。我认为与 Glide 相关的问题
-我的代码
-msg_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/item_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--this item-->
<ImageView
android:id="@+id/chat_image"
android:layout_width="200dp"
android:layout_height="wrap_content"
/>
<LinearLayout
android:id="@+id/msg_linear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/user_id"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textAppearance="@android:style/TextAppearance.Material.Large" />
<TextView
android:id="@+id/msg_area"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textAppearance="@android:style/TextAppearance.Material.Large" />
</LinearLayout>
</LinearLayout>
TalkAdapter.kt
class TalkAdapter(val list: List<ChatDto>, val glide: RequestManager) :
RecyclerView.Adapter<TalkAdapter.ViewHolder>() {
private var mList = list as ArrayList<ChatDto>
private val myId = list[0].id
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TalkAdapter.ViewHolder =
ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.msg_item, parent, false))
override fun getItemCount(): Int = mList.size
override fun onBindViewHolder(holder: TalkAdapter.ViewHolder, position: Int) {
holder.itemView.apply {
if (mList[position].id == myId) {
msg_area.apply {
if (position != 0)
text = mList[position].msg
}
user_id.text = ""
//my intend
item_parent.gravity = Gravity.END
} else {
msg_area.apply {
text = mList[position].msg
//and this
gravity = Gravity.START
}
user_id.text = mList[position].id
item_parent.gravity = Gravity.START
}
chat_image.apply {
if (mList[position].uri != null) {
visibility = View.VISIBLE
glide.load(mList[position].uri)
.into(this)
} else {
visibility = View.GONE
}
}
}
}
fun addItem(item: ChatDto) {
mList.add(item)
Log.e("mList-size", mList.size.toString())
notifyItemInserted(mList.size - 1)
}
}
问题:
Android Studio 预览:
解决方案
推荐阅读
- powershell - Get-NetIPConfiguration 是否按绑定顺序返回接口?
- c++ - 将静态 void 方法存储为函数
- java - 可以在参数是函数结果的方法中获取参数名称
- python - 如果元素不存在于 3d 数组中的其他数组中,则继续循环
- xml - 如何使用 XSLT 将元素的值复制为多记录 xml 文档中的新元素
- algorithm - 事件属性作为先决条件
- php - 找不到 phpSerial 类
- react-native-android - TypeError:无法读取未定义的属性“getCurrentUserAsync”
- php - 带有下拉选择项目的表行数据可供选择
- robotics - 如何在 webbots 的多进程或多线程中运行机器人的控制器?