当前位置: 首页 > 知识库问答 >
问题:

水平滚动的文本视图在android版本中显示不一致的行为

包沈义
2023-03-14

我有一个文本视图,它有一个单行的阿拉伯语(从右到左)文本。文本内容会随着时间的推移而增加,最后一部分(最左侧)应该始终出现。水平滚动条最初设置为右侧,随着文本的增加自动向左滚动。

下面的代码在2.3Android手机上运行良好。这来自layout.xml

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="none"
    android:fadingEdge="horizontal"
    android:gravity="right"
    android:scrollHorizontally="true"
    android:scrollbars="horizontal"
    android:singleLine="true"
    android:text="@string/txt_start"
    android:textAppearance="?android:attr/textAppearanceLarge" />

我在我的活动的onCreat()方法中有这个

tv = (TextView) findViewById(R.id.textView1);
tv.setMovementMethod(new ScrollingMovementMethod());

问题在于android 4.0手机上文本视图的行为不一致。水平滚动条最初不位于右侧,因此文本视图最初为空白!如果我试图滚动空白文本视图,文本就会出现。添加额外文本时,滚动条不会滚动以显示新文本,但如果我手动滚动文本,它会出现。

我搜索了stackoverflow,试图添加以下属性,但没有成功。

android:focusable="true"
android:focusableInTouchMode="true"

共有3个答案

暴乐邦
2023-03-14

发现重力左/右是不推荐的,开发者应该使用开始/结束。要滚动文本,需要将“wrap_content”设置为其宽度,此外,还需要将textDirection设置为RTL。由于未知的原因,textDirection没有以编程方式工作,而是在xml中工作。

代码在Android的所有API版本上运行良好。

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="end"
        android:textDirection="rtl"
        android:scrollHorizontally="true"
        android:scrollbars="horizontal"
        android:singleLine="true"
        android:ellipsize="none"
        android:text="@string/txt_start"
        android:textAppearance="?android:attr/textAppearanceLarge" />
唐昊焜
2023-03-14

试试这个例子,它应该可以工作:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <TextView
         android:id="@+id/myText"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text="@string/myscroll"
         android:ellipsize="marquee"
         android:singleLine="true"
         android:scrollHorizontally="true"
         android:marqueeRepeatLimit="10"
>
</LinearLayout>

注意:当测试字幕时,不要在Eclipse中的设计视图中测试它,请在模拟器\设备上尝试。

另外,如果您想在代码中添加滚动效果:

TextView tView = (TextView) findViewById(R.id.myText);
tView.stSelected(true);

要使选框在选框末尾不停地滚动,请执行以下操作:

android:marqueeRepeatLimit=”marquee_forever”
危飞文
2023-03-14

在我想用android:gravity=“right”设置文本视图滚动动画的情况下,这些解决方案都不起作用。不过,简单的解决方法是将TextView重力保持在左侧,但将其放置在RelativeLayout容器中与右侧对齐:

<RelativeLayout
  android:orientation="horizontal"
  android:layout_width="match_parent"
  android:layout_height="wrap_content">
  <AutoScrollingTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:gravity="left"
    android:singleLine="true"
    android:ellipsize="none">
</RelativeLayout>
 类似资料:
  • 我有一个水平ScrollView,它有两个元素:CardView和水平RecycerView。所以,当用户水平滚动时,我希望这两个元素滚动。 我想有这样的东西:Goal,橙色的线是CardView,黄色的线是RecycerView。当用户滚动时,两个元素滚动,如下所示:Scrolled Goal。 现在在我的应用程序中,当用户滚动时,只有RecycerView滚动。CardView保持在他的位置。

  • 我想做的从右到左滚动与我猜将是一个recylcer视图,但不确定是否是这个。我只是需要有人给我指明正确的方向。我想我需要一个内部布局的回收视图。 如果有人能指点我在哪里找到答案,我会变得很伟大!

  • 我正在使用Recyclerview显示项目列表。现在每次都可以有一些照片/多张照片,我需要在一行中水平滚动显示。 我目前正在使用画廊小部件来显示照片,但因为它现在已被弃用,所以我想用一些其他的东西来显示与画廊相同的功能水平图像。你能帮帮我吗? 非常感谢你的帮助。

  • 我在用Android Studio。 如何使它支持旧版本? intractivity.xml

  • 所以我在垂直ScrollView中有一个水平回收器视图。我的布局中的所有内容都显示得很好,并且都按照我想要的方向滚动,并且它做得很好。 我唯一的问题是,RecyclerView位于ScrollView中其他内容的下方,当RecyclerViewer部分可见时,它会在启动时将RecyclerView的底部与屏幕的底部对齐。这意味着RecyclerView上方的内容被推离屏幕。 有谁知道为什么会发生这

  • 我做了一个水平循环视图,效果很好(多亏了这个),但滚动和数据的方向是从左向右扩展的;那么,我该如何更改RecyclerView滚动方向,如下图所示? 我的代码: