首页 > 解决方案 > Gravity:End 没有以编程方式生效

问题描述

我提供gravity:end了 xml,它显示在 Android Studio 的右侧。(结束)
但以编程方式不起作用。

  1. layout_gravity:endinchat_image仅在 Android Studio 预览版中工作,但不能以编程方式工作。
  2. 更改item_parentRelativeLayout但不工作和相同LinearLayout
  3. 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 预览:

Android Studio 预览

标签: androidandroid-layoutkotlinandroid-glidelayout-gravity

解决方案


推荐阅读