如果maxLines = 1,为什么字符/剪切TextView中的文本?

时间:2016-05-31 15:37:21

标签: android view textview special-characters

我有什么

我有一个TextView,其显示的网址为" https://"前缀:

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="test2"
            android:maxLines="1"
            android:ellipsize="marquee"
            android:textStyle="bold"
            android:textSize="16sp"
            android:textColor="@color/primary_text"
            android:id="@+id/txvNomEntornIversio" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="https://test2.sdasasdasdfasdfasdffasdfasdfasdf.sdffd"
            android:ellipsize="end"
            android:maxLines="1"
            android:paddingLeft="10dp"
            android:textSize="13sp"
            android:textStyle="italic"
            android:id="@+id/txvUrlEntorn"/>

    </LinearLayout>

什么是问题?

执行代码后,android studio预览和设备中的结果是:

如果执行上一个代码: enter image description here

如果我删除&#34; /&#34;符号: enter image description here

如果我将符号移到其他位置: enter image description here



我需要什么

我需要显示前缀&#34; https://&#34;最大字母以适应可用空间。

我做了什么

我尝试read documentation(setEllipsize块)并在stackoverflow中搜索,使用此符号搜索某些引用但未找到任何内容。 我也尝试过无效的符号。

任何人都知道它为什么会发生并可以帮助我吗?提前谢谢!

更新布局

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="15dp"
    android:paddingBottom="15dp"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/icon_unchecked"
        android:layout_marginRight="10dp"
        android:id="@+id/txvIconChecked"/>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="test2"
            android:maxLines="1"
            android:ellipsize="marquee"
            android:textStyle="bold"
            android:textSize="16sp"
            android:textColor="@color/primary_text"
            android:id="@+id/txvNomEntornIversio" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="https://mydomain.asdfasdasdfasdfasdffasdfasdfasdf.cat"
            android:ellipsize="end"
            android:maxLines="1"
            android:paddingLeft="10dp"
            android:textSize="13sp"
            android:textStyle="italic"
            android:id="@+id/txvUrlEntorn"/>

    </LinearLayout>

</LinearLayout>

enter image description here

enter image description here

更新2

感谢Teiky,我们发现只有在低于API 23的版本中才会出现此问题。这可能是一个错误?

选项(已弃用)Android:SingleLine =&#34; true&#34;似乎在所有版本中都能正常工作!相反,新选项android:MaxLines with android:ellipsize仅适用于23 ...

目前,最可行的选择似乎忽略了已弃用的SingleLine ...

解决方案

最后,正如我在上次更新中所说,我的解决方案是继续使用android:SingleLine = true,即使它被标记为已弃用。

Teikyo秒,他尝试了dipsositiu android 4.4.4并使用MaxLines ellipsize工作得很好......而我,一个设备Lollipop我仍然剪切文字找到符号/ ...

对Teikyo的反应很好,因为它帮助我进一步调查问题。谢谢大家的帮助!

2 个答案:

答案 0 :(得分:1)

我尝试了您的代码,并且网址已完全显示。 如果您有足够的宽度来显示完整的URL,也许您应该检查这些参数:

android:layout_width="0dp"
android:layout_weight="1"

xikitidistant更新:

解决方案不是重量和宽度=“0dp”。这是代码改进。我的解决方案在问题中更新。谢谢你的帮助。

答案 1 :(得分:0)

android:maxLines="1"
android:ellipsize="end"