添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
腼腆的松球  ·  Virtual Box ...·  10 月前    · 
讲道义的手链  ·  java bufferedwriter ...·  1 年前    · 
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Show hidden characters

@andor201995 I think this is the view I was working with most recently:

<TextView
    android:id="@+id/searchResultsExplainer"
    style="?attr/textAppearanceBody1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginHorizontal="16dp"
    android:ellipsize="end"
    android:maxLines="4"
    app:layout_constraintBottom_toTopOf="@id/topBarrier"
    app:layout_constraintEnd_toStartOf="@id/viewTypeToggle"
    app:layout_constraintStart_toEndOf="@id/openFilters"
    app:layout_constraintTop_toBottomOf="@id/searchInputLayout"
    app:layout_constraintVertical_bias="0.5"
    tools:text="Search results: &quot;Dining Room&quot;"
    tools:visibility="visible" />

Idk if that helps you at all.

Another thing you can try doing is ellipsizing the text manually. Something like:

val text = "Whatever really long string you are setting"
someTextView.addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ ->
    someTextView.text = TextUtils.ellipsize(
        text,
        someTextView.paint,
        someTextView.width.toFloat(),
        TextUtils.TruncateAt.MIDDLE // Or END, etc

You need to do the change in an OnLayoutChangeListener because your view might not be laid out yet when you are calling this code to set the text. The TextUtils.ellipsize method needs to know the width of the view the text is going into in order to ellipsize it properly.

Your solution was really helpful in guiding my usecase and used below code

private fun setSubTitle(text: String?) {
        // set the layout with expected max width for text
        contentText.isSingleLine = true
        contentText.text = text
        // reset the text with ellipsized text
        contentText.doOnNextLayout {
            if (it is TextView) {
                it.text = TextUtils.ellipsize(
                    text,
                    it.paint,
                    it.width.toFloat(),
                    TextUtils.TruncateAt.END

Thanks a lot.