我有一个非常有趣的问题。我应该为电报中的文本消息制作布局,但只能使用文本。所以如果消息文本超过1行,我应该将时间戳稍微调低一点。 我用2个textViews做了布局(一个用于单行消息,另一个用于多行,你可以在附加中看到我的布局)
我的问题是,当我为多行情况显示时间戳时,所有列表都有一点跳跃(因为视图高度变化) 这里是我的viewHolder中的代码(我使用kotlin,但它仍然非常明显)。 主要问题是 - 如何在渲染之前在textView中计算行数?
val date = stamp.toString(Constants.DEFAULT_TIME_FORMAT)
textViewItemMessageText.text = text
textViewItemMessageTimeForSingleLine.show()
textViewItemMessageTime.hide()
textViewItemMessageTimeForSingleLine.text = date
textViewItemMessageText.post {
if (textViewItemMessageText.lineCount > 1) {
textViewItemMessageTimeForSingleLine.hide()
textViewItemMessageTime.show()
textViewItemMessageTime.text = date
}
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:layout_marginBottom="4dp"
android:layout_marginLeft="60dp"
android:layout_marginRight="20dp"
android:layout_marginTop="4dp"
app:cardBackgroundColor="@color/thin_green"
app:cardCornerRadius="4dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:orientation="vertical">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textViewItemMessageText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif"
android:textColor="@color/black_light_87"
android:textSize="14sp"
android:textStyle="normal"
tools:text="My generation"/>
<TextView
android:id="@+id/textViewItemMessageTimeForSingleLine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:drawableLeft="@drawable/ic_read"
android:fontFamily="sans-serif"
android:gravity="center_vertical"
android:textColor="@color/grass_two_54"
android:textSize="12sp"
android:textStyle="normal"
tools:text="16:20"/>
</LinearLayout>
<TextView
android:id="@+id/textViewItemMessageTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginLeft="4dp"
android:layout_marginTop="2dp"
android:drawableLeft="@drawable/ic_read"
android:fontFamily="sans-serif"
android:textColor="@color/grass_two_54"
android:textSize="12sp"
android:textStyle="normal"
tools:text="16:20"/>
</LinearLayout>
</android.support.v7.widget.CardView>