Android spanTextView中的可启用文本未正确显示。/span

Android spanTextView中的可启用文本未正确显示。/span,android,textview,spannable,Android,Textview,Spannable,我的代码运行得很好,但是当将构建工具和库从26.0.2更新到27.0.3时,TextView开始剪切文本。线性布局中有4个文本视图。每个文本视图的宽度为0dp,权重为1。所有文本视图都有一个4个字母的单词,所以它们应该显示相同的内容,但是构建工具更新破坏了它 String s = "ssss"; float textBigger = 1.5f; SpannableString ss1 = new SpannableString(s);

我的代码运行得很好,但是当将构建工具和库从26.0.2更新到27.0.3时,TextView开始剪切文本。线性布局中有4个文本视图。每个文本视图的宽度为0dp,权重为1。所有文本视图都有一个4个字母的单词,所以它们应该显示相同的内容,但是构建工具更新破坏了它

        String s = "ssss";
        float textBigger = 1.5f;
        SpannableString ss1 = new SpannableString(s);
        int index = 2;
        ss1.setSpan(new RelativeSizeSpan(textBigger), 0, index, 0); // set size
        ss1.setSpan(new ForegroundColorSpan(biggerTextColor), 0, index, 0);// set color
        textView.setText(ss1, TextView.BufferType.SPANNABLE);
它应该是什么样子的:

它现在的样子:

从26.0.2更新的库:

compile 'com.android.support:appcompat-v7:27.0.2'
compile 'com.android.support:design:27.0.2'
compile 'com.android.support:cardview-v7:27.0.2'
compile 'com.android.support:support-v4:27.0.2'
编辑:

经过更多调试后,我将gradle改回以下内容:

compileSdkVersion 27
buildToolsVersion = '27.0.3'
targetSdkVersion 23
compile 'com.android.support:appcompat-v7:26.0.2'
现在只要将targetSdkVersion更改为27,问题就出现了。这件事与它无关。TextView中的文本表现不同。它甚至在AndroidStudio xml预览中显示,当targetSdkVersion设置为27时,文本被剪切

要测试它,请使用上面的渐变设置创建一个项目。以及下面的主要活动布局。将targetSdkVersion从23更改为27,您应该会看到问题所在

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.ziadalhalabi.testspannable.MainActivity">


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center">

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:layout_weight="1"
            android:background="?attr/selectableItemBackgroundBorderless"
            android:ellipsize="end"
            android:fontFamily="sans-serif-light"
            android:gravity="center"
            android:maxLines="1"
            android:text="Amin"
            android:textSize="18sp" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:layout_weight="1"
            android:background="?attr/selectableItemBackgroundBorderless"
            android:ellipsize="end"
            android:fontFamily="sans-serif-light"
            android:gravity="center"
            android:maxLines="1"
            android:text="Bmin"
            android:textSize="18sp" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:layout_weight="1"
            android:background="?attr/selectableItemBackgroundBorderless"
            android:ellipsize="end"
            android:fontFamily="sans-serif-light"
            android:gravity="center"
            android:maxLines="1"
            android:text="Cmaj"
            android:textSize="18sp" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:layout_weight="1"
            android:background="?attr/selectableItemBackgroundBorderless"
            android:fontFamily="sans-serif-light"
            android:gravity="center"
            android:maxLines="1"
            android:text="Dmin"
            android:textSize="18sp" />

    </LinearLayout>


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center">


        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:layout_weight="1"
            android:background="?attr/selectableItemBackgroundBorderless"
            android:fontFamily="sans-serif-light"
            android:gravity="center"
            android:maxLines="1"
            android:text="Gmaj"
            android:textSize="18sp" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:layout_weight="1"
            android:background="?attr/selectableItemBackgroundBorderless"
            android:fontFamily="sans-serif-light"
            android:gravity="center"
            android:maxLines="1"
            android:text="C#min"
            android:textSize="18sp" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:layout_weight="1"
            android:background="?attr/selectableItemBackgroundBorderless"
            android:fontFamily="sans-serif-light"
            android:gravity="center"
            android:maxLines="1"
            android:text="F#min"
            android:textSize="18sp" />


    </LinearLayout>

</LinearLayout>

好的,我能够重现这个问题。这里的
appcompat-v7
中完全可能存在潜在的bug。但是,您可以通过简化布局来解决此问题。用一个简单的
android:layout\u width=“0dp”
替换所有
TextView
小部件上的
android:layout\u width=“0dp”和
android:layout\u weight=“1”
组合:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">


  <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center">

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_margin="8dp"
      android:background="?attr/selectableItemBackgroundBorderless"
      android:ellipsize="end"
      android:fontFamily="sans-serif-light"
      android:gravity="center"
      android:maxLines="1"
      android:text="Amin"
      android:textSize="18sp" />

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_margin="8dp"
      android:background="?attr/selectableItemBackgroundBorderless"
      android:ellipsize="end"
      android:fontFamily="sans-serif-light"
      android:gravity="center"
      android:maxLines="1"
      android:text="Bmin"
      android:textSize="18sp" />

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_margin="8dp"
      android:background="?attr/selectableItemBackgroundBorderless"
      android:ellipsize="end"
      android:fontFamily="sans-serif-light"
      android:gravity="center"
      android:maxLines="1"
      android:text="Cmaj"
      android:textSize="18sp" />

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_margin="8dp"
      android:background="?attr/selectableItemBackgroundBorderless"
      android:fontFamily="sans-serif-light"
      android:gravity="center"
      android:maxLines="1"
      android:text="Dmin"
      android:textSize="18sp" />

  </LinearLayout>


  <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center">


    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_margin="8dp"
      android:background="?attr/selectableItemBackgroundBorderless"
      android:fontFamily="sans-serif-light"
      android:gravity="center"
      android:maxLines="1"
      android:text="Gmaj"
      android:textSize="18sp" />

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_margin="8dp"
      android:background="?attr/selectableItemBackgroundBorderless"
      android:fontFamily="sans-serif-light"
      android:gravity="center"
      android:maxLines="1"
      android:text="C#min"
      android:textSize="18sp" />

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_margin="8dp"
      android:background="?attr/selectableItemBackgroundBorderless"
      android:fontFamily="sans-serif-light"
      android:gravity="center"
      android:maxLines="1"
      android:text="F#min"
      android:textSize="18sp" />


  </LinearLayout>

</LinearLayout>

compileSdkVersion
targetSdkVersion
都设置为27的情况下,使用
appcompat-v7
27.0.2
,在运行安卓8.1的Nexus 5X上实现了这一点:


在你最初的方法中,似乎发生的事情是Android试图对这些行进行文字包装,但由于你将
maxLines
设置为
1
,它反而截断了这些行。

什么是“剪切文本”呢?“毁了它”是什么意思?
textbeager
的值是多少?
biggerTextColor
的值是多少?四个
TextView
小部件之间有什么区别?您是否有一个屏幕截图,与您看到的内容相比,您期望的内容是什么?@commonware谢谢您的评论。我上传了2个截图,并添加了更多的infosOK。。。真奇怪。我很难相信
buildToolsVersion
会产生这样的效果。我可以很容易地看到基于其他更改的问题(例如,您使用
appcompat-v7
并升级到该版本的某个较新版本)。如果您创建了一个复制效果的项目,并将其上传到某个地方,我很想看看是否可以在这里实现。@Commonware很抱歉,库是根据构建工具版本tooAh更新的,这很可能是您遇到困难的原因。
buildToolsVersion
和库版本在很大程度上是独立的。库版本与您的
编译器dkversion
targetSdkVersion
相关联。尝试使用
buildToolsVesrion'27.0.3'
,但将
compileSdkVersion
targetSdkVersion
删除到
26
,并将支持库版本删除到
26.1.0
。如果问题消失了,我的猜测是这个问题与appcompat-v7:27.0.2有关,如果你用重现问题的项目提交错误报告,他们应该能够修复它。