【问题标题】:Create a auto fill chat message view in android在android中创建一个自动填充聊天消息视图
【发布时间】:2020-07-08 16:56:34
【问题描述】:

我正在尝试设计一个如下所示的聊天消息视图: Whatsapp design

只要文本是单行的,一切都是正确的。 My design

但是当文本是多线性时,它看起来像这样: My design

如何设计一个自动填充time-textView上方空间的聊天消息视图? 是否可以仅在 XML 上执行此操作?

我的代码:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/nip_send_chat_bubble">


<ImageView
    android:id="@+id/seenStatus"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="2dp"
    android:layout_marginLeft="2dp"
    android:layout_marginEnd="24dp"
    android:layout_marginRight="24dp"
    android:layout_marginBottom="8dp"
    android:tint="?attr/metaTextColor"
    android:src="@drawable/message_sent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toEndOf="@+id/time" />

<TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="4dp"
    android:layout_marginLeft="4dp"
    android:layout_marginTop="4dp"
    android:layout_marginEnd="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginBottom="4dp"
    android:maxWidth="200dp"
    android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore"
    android:textColor="?attr/textColor"
    android:textSize="16sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/time"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/time"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="4dp"
    android:layout_marginLeft="4dp"
    android:layout_marginEnd="2dp"
    android:layout_marginRight="2dp"
    android:text="11:50 PM"
    android:textColor="?attr/metaTextColor"
    android:textSize="12sp"
    app:layout_constraintBottom_toBottomOf="@+id/seenStatus"
    app:layout_constraintEnd_toStartOf="@+id/seenStatus"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toEndOf="@+id/text"
    app:layout_constraintTop_toTopOf="@+id/seenStatus" />
</androidx.constraintlayout.widget.ConstraintLayout>

【问题讨论】:

    标签: android android-layout android-xml


    【解决方案1】:

    您可能会尝试将布局从约束更改为相对布局。检查这段代码是否对您有帮助。

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/nip_send_chat_bubble">
    
    
    <ImageView
        android:id="@+id/seenStatus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/text"
        android:tint="?attr/metaTextColor"
        android:src="@drawable/message_sent"
        android:layout_alignParentRight="true"
        />
    
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore"
        android:textColor="#000"
        android:textSize="16sp"
        />
    
    <TextView
        android:id="@+id/time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="11:50 PM"
        android:textSize="12sp"
        android:layout_below="@id/text"
        android:layout_toLeftOf="@id/seenStatus"
        />
    

    PS:我没有做格式,所以你可以根据需要添加。

    【讨论】:

    • 感谢您的回答。但是当文本为单行时,应该在time-textView的前面,而不是在顶部
    • 哦,好吧...实际上您的解决方案可能就在这里! stackoverflow.com/questions/30168465/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2017-10-12
    • 1970-01-01
    • 2015-01-21
    • 2014-12-14
    • 2017-10-23
    • 2017-02-12
    相关资源
    最近更新 更多