29

我正在做一个计算器。我注意到在默认的 android calc 中,您可以水平滚动 textview。我查阅了文档并发现了该属性android:scrollHorizontally,但是在将其添加到 textview 之后我仍然无法进行水平滚动,文档上没有关于它的更多信息,导致我认为只添加 attr 就足够了。这是计算器的文本视图:

    <TextView android:id="@+id/edit_text"
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_weight=".8"
        android:singleLine="true"
        android:scrollHorizontally="true"
        android:gravity="center|right"
        android:text="0" />

当字符超过 textview 宽度时,字符串将被修剪并 ... 出现在它的末尾。我究竟做错了什么?

4

4 回答 4

45
<HorizontalScrollView android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:layout_width="40dp"
        android:layout_height="wrap_content"
        android:scrollHorizontally="true"
        android:text="Horizontal scroll view will work now"/>

</HorizontalScrollView>

这就是您可以使 textview 水平滚动的方法。

于 2012-12-31T06:01:14.553 回答
8

我有点晚了,但我设法在不添加的情况下达到了相同的结果HorizontalScrollView

EditText扩展TextView以支持滚动和选择。因此,您可以将其EditText用作TextView(触摸、焦点和光标被禁用)。

<EditText
    android:id="@+id/edit_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent" --> This remove that line at the bottom
    android:clickable="false" --> It can be true if you need to handle click events
    android:cursorVisible="false" --> Hide the cursor
    android:focusable="false" --> Disable focus
    android:singleLine="true"
    android:text="This is a very long text that won't be possible to display in a single line"/>

我只是无法在各种设备上进行测试......我只是分享,因为它可能对其他人有用。

于 2019-06-11T16:49:26.573 回答
7

就用这个

   textview.setMovementMethod(new ScrollingMovementMethod());
   textview.setHorizontallyScrolling(true);
于 2020-08-14T07:48:42.987 回答
2

可能是一个迟到的答案,但可以让 TextView 双向滚动。无需scrollHorizontally在 XML 或代码中设置属性。

以下代码根据文本内容使单行或多行 TextView 垂直和水平滚动。

<HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/toolbar"
        android:scrollbars="none">

        <ScrollView
            android:id="@+id/scroll_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:scrollbars="none">

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/text_content"
                fontPath="fonts/roboto_medium.ttf"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/primary_text"
                android:textSize="14sp" />

        </ScrollView>
</HorizontalScrollView>

注意layout_widthforScrollViewTextView设置为wrap_content。的 WidthHorizontalScrollView可以是wrap_contentmatch_parent没有效果。

于 2019-07-18T11:25:59.817 回答