文本视图单行

Posted

技术标签:

【中文标题】文本视图单行【英文标题】:TextView singleLine 【发布时间】:2017-05-30 01:53:48 【问题描述】:

我想创建一个带有单行的文本视图,该行位于 swipelayout 内。每个文本视图都代表一个用户可以触摸的动作。所有文本视图的宽度均为 100dp。现在我遇到的问题是 textview 的文本太长并且它会换行到下一行。我不想使用android:singleLine="true"。现在我添加了android:maxLines="1"android:inputType="text" 并且效果很好。但现在我收到警告:

属性 android:inputtype 不应与 TextView> 一起使用:更改 元素类型为 EditText>

我不想输入文字,所以我不需要EditText

还有其他方法还是我应该忽略这个警告?

<TextView
    android:id="@+id/item_list_bottom_rename"
    android:layout_
    android:layout_
    android:maxLines="1"
    android:inputType="text"
    android:layout_gravity="center"
    android:drawableTop="@drawable/ic_visibility_white_36dp"
    android:gravity="center"
    android:padding="10dp"
    android:text="@string/rename"
    android:textColor="@color/item_title_listname"/>

解决方案:

<HorizontalScrollView
    android:layout_
    android:layout_
    android:layout_gravity="center"
    android:fillViewport="true"
    android:minWidth="100dp"
    android:scrollbars="none">

    <TextView
        android:id="@+id/item_list_bottom_rename"
        android:layout_
        android:layout_
        android:layout_gravity="center"
        android:drawableTop="@drawable/ic_visibility_white_36dp"
        android:gravity="center"
        android:maxLines="1"
        android:text="@string/rename"
        android:textColor="@color/item_title_listname"/>
</HorizontalScrollView>

【问题讨论】:

【参考方案1】:

你读过它的内容吗?

使用&lt;TextView&gt; 输入文本通常是错误的,你应该是 改用&lt;EditText&gt;。 EditText 是 TextView 的子类,还有一些 的编辑支持由 TextView 提供,因此可以 在 TextView 上设置一些与输入相关的属性。然而,使用一个 TextView 连同输入属性通常是剪切和粘贴错误。 要输入文本,您应该使用&lt;EditText&gt;

InputType -整数的位定义,用于定义 可编辑 对象中保存的文本的基本内容类型。支持的类可以与变体和标志组合以指示所需的行为。

属性android:editable 不应与&lt;TextView&gt; 一起使用,这就是原因!

您可以在您的textView 中删除该inputType


没有android:singleLine="true",但有android:maxLines="1"

替代品

1.使用编译器要求的内容 :P EditText 并使其充当 textView

<EditText
    android:cursorVisible="false"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:inputType="text"
    android:maxLines="1"
    android:text="Helloo"
    android:id="@+id/Id"
    android:layout_
    android:layout_
    android:background="@android:color/transparent" >
</EditText>

2.你也可以使用

<HorizontalScrollView
    android:fillViewport="true"
    android:scrollbars="none"
    android:layout_
    android:layout_>
    <TextView
        android:id="@+id/item_list_bottom_rename"
        android:layout_
        android:layout_
        android:layout_gravity="center"
        android:maxLines="1"
        android:text="Heloo" />
</HorizontalScrollView>

【讨论】:

我没有使用android:editable 并且我不想编辑我的TextView。据我所知,由于android:singleLine="true" 已被弃用,因此应使用android:maxLines="1"android:inputType="text"。我的代码工作正常我只是想知道我是否应该忽略警告或者是否有其他方法。 我也没说你用过android:editable 再看看我说的是关于InputType及其定义 @beeb inputType="text" 对非可编辑文本视图没有任何作用。它仅作为参数发送到键盘。所以你可以安全地移除它,它不会改变显示。我也不知道为什么你认为 singleLine=true 已被弃用,事实并非如此。检查文档。 @beeb 对我来说在 AS 中没有被弃用,在文档 developer.android.com/reference/android/widget/… 中也没有被弃用。您引用的页面说自第 3 版以来已弃用,我可以向您保证它没有 - 我在过去 6 年中一直在使用它,但没有看到任何弃用警告。 感谢大家的回答和时间。 @Charuka 我接受了你的回答。我进行了很多测试,我将使用您的第二个解决方案与HorizontalScrollView。这正是我需要的。我设置了minWidth="100",如果有更长的文本,textview 会增加它的宽度。

以上是关于文本视图单行的主要内容,如果未能解决你的问题,请参考以下文章

根据里面的多行文本视图动态设置 ListView 高度

动态调整文本大小以使整个文本行适合文本字段

单行 UILabel 拥抱不适用于自动收缩

在 ConstraintLayout 中自动调整多行文本视图的大小

单行文本如何转换为多行文本?

单行文本与多行文本省略文本