【问题标题】:ImageSpan makes extra space between textlinesImageSpan 在文本行之间留出额外的空间
【发布时间】:2018-05-08 10:40:59
【问题描述】:

在尝试将ImageSpan 放在textview 前面时,我在平板电脑上的行之间获得了额外的空间,例如连结 7

但在 Nexus5x 上没问题

 public void setTitleWithItemCount(String name, int itemCount, @StringRes int singularResID, @StringRes int pluralRedID) {
        final String itemNoun = itemCount == 1 ? getResources().getString(singularResID) : getResources().getString(pluralRedID);
        final String title = getResources().getString(R.string.work_summary_tile_title,
                                                      " " + name,
                                                      itemCount,
                                                      itemNoun);
        final SpannableStringBuilder workItemTxt = new SpannableStringBuilder(title);

        Drawable d = getResources().getDrawable(actionImage);
        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
        ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM);
        workItemTxt.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

        workItemTxt.setSpan(new TextAppearanceSpan(getContext(), R.style.WorkItemTitleText),
                            1,
                            name.length(),
                            Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        workItemTxt.setSpan(new TextAppearanceSpan(getContext(), R.style.WorkItemSubTitleText),
                            name.length(),
                            title.length() + 1,
                            Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

        titleView.setText(workItemTxt);
    }

xml

<TextView
    android:id="@+id/text_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_marginEnd="5dp"
    android:layout_marginStart="-20dp"
    android:layout_toEndOf="@+id/image_container"
    android:layout_toStartOf="@id/progress_title"
    android:ellipsize="end"
    android:lines="3"
    android:maxLines="3"
    android:textAppearance="@style/WorkItemTitleText"
    tools:text="@string/lorem_ispum_short"/>

我该如何解决这个问题?任何帮助表示赞赏

【问题讨论】:

    标签: java android spannablestring imagespan


    【解决方案1】:

    尝试使用一个库来设置所有设备相同的值。管理所有设备都没有问题..

    将以下依赖项添加到应用级 gradle 文件中 ..

    implementation 'com.intuit.sdp:sdp-android:1.0.4'
    

    然后在所有控件中以这种方式赋予值之后..

         android:layout_marginStart="@dimen/_75sdp"
        android:layout_marginTop="@dimen/_75sdp"
        android:padding="@dimen/_15sdp"
    

    【讨论】: