Android:TextView水平滚动

时间:2012-02-23 23:47:09

标签: android scroll textview

我想创建一个从右向左滚动然后从左侧消失并再次从右侧重新出现的TextView。我可以用动画??感谢

4 个答案:

答案 0 :(得分:6)

我相信你希望你的文字视图能够用作选框。如果是这样,我就这样做了:

在XML中。为TextView设置以下属性:

android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="false"
android:scrollHorizontally="true"

如果TextView在RelativeLayout中,则宽度或高度必须是静态的(即32dp)。如果需要动态,请将TextView放在RelativeLayout中的另一个视图中。

在onCreate()中,您需要选择TextView:

myTextView.setSelected(true);

Original Answer

答案 1 :(得分:0)

这有帮助吗?找到它here

<LinearLayout android:orientation="vertical">
<HorizontalScrollView>
    <LinearLayout android:orientation="horizonal">
        <Image1 />
        <Image2 />
        <Image3 />
        <Image4 />
        <Image5 />
    </LinearLayout>
</HorizontalScrollView>
<LinearLayout android:orientation="horizonal">
    <Button1 android:layout_weight="1" />
    <Button2 android:layout_weight="1" />
    <Button3 android:layout_weight="1" />
    <Button4 android:layout_weight="1" />
</LinearLayout >

答案 2 :(得分:0)

如果您想在控制聚焦时使用滚动文本,请使用

<TextView ... android:ellipsize="marquee" android:singleLine="true"/>

否则你应该自己实现:

  1. 使用计时器(或处理程序)并将偏移设置为TextView
  2. 披肩     this
  3. 或者也许试试     this

答案 3 :(得分:0)

我使用此代码为recyclerView中的textView设置动画。 (此代码可以使用任何代码)

在xml中

class AfterBlahOperator(BaseOperator):
template_fields = (input_paths)

def __init__(self, ..., *args, **kwargs):
    ...


def execute(self, context):
    paths = eval(input_paths) 
    for path in paths:
        ...

在适配器中

<HorizontalScrollView
                android:id="@+id/scrollViewTxtAppsEn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="true"
                android:scrollbars="none"
                android:visibility="visible"
                >

                <TextView
                    android:id="@+id/txtAppsEn"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingTop="4dp"
                    android:paddingBottom="8dp"
                    android:clickable="true"
                    android:focusable="true"
                    android:gravity="center"
                    android:maxLines="1"
                    android:scrollHorizontally="true"
                    android:text=""
                    android:textColor="@color/textColorDark"
                    android:textSize="9sp"
                    />
            </HorizontalScrollView>

text_view_anim_left_to_right.xml

 @Override
  public void onViewAttachedToWindow(@NonNull ViewHolder holder) {
    handelAnimationTextView(holder.txtAppsEn, holder.scrollViewTxtAppsEn, true);
    super.onViewAttachedToWindow(holder);
  }

private void handelAnimationTextView(TextView textView, HorizontalScrollView scrollViewTextView, boolean isRightToLeft) {
    textView.post(new Runnable() {
      @Override
      public void run() {
        if (canScroll(scrollViewTextView)) {
          if (isRightToLeft) {
            textView.startAnimation((Animation) AnimationUtils.loadAnimation(G.currentActivity, R.anim.text_view_anim_right_to_left));
          } else {
            textView.startAnimation((Animation) AnimationUtils.loadAnimation(G.currentActivity, R.anim.text_view_anim_left_to_right));
          }
        }
      }
    });
  }

  private boolean canScroll(HorizontalScrollView horizontalScrollView) {
    View child = (View) horizontalScrollView.getChildAt(0);
    if (child != null) {
      int childWidth = (child).getWidth();
      return horizontalScrollView.getWidth() < childWidth + horizontalScrollView.getPaddingLeft() + horizontalScrollView.getPaddingRight();
    }
    return false;

  }

text_view_anim_right_to_left.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
           android:duration="6000"
           android:fromXDelta="-100%"
           android:interpolator="@android:anim/linear_interpolator"
           android:repeatCount="infinite"
           android:repeatMode="restart"
           android:toXDelta="100%"/>

希望我有帮助