对cardView内部的textView进行动画处理以显示长文本

时间:2019-11-22 10:04:45

标签: android xml

我要对TextView进行动画处理,在CardView中可能会有长文本。我从这个问题animate textView找到了几个答案。

<androidx.cardview.widget.CardView
android:id="@+id/lineCard"
android:layout_width="match_parent"
android:layout_height="120dp"
android:foreground="?attr/selectableItemBackground"
app:cardBackgroundColor="@color/Black">
    <TextView
        android:id="@+id/tvCallerName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:backgroundTint="#00FFFFFF"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"
        android:singleLine="true"
        android:textAlignment="center"
        android:textColor="@color/White"
        android:textSize="32sp"/>
</androidx.cardview.widget.CardView>

我正在使用ellipsize,marqueeRepeatLimit,scrollHorizontally,singleLine。但仍然无法正常工作。文本以两行显示。我在这里想念什么?预先谢谢你。

2 个答案:

答案 0 :(得分:1)

 <androidx.cardview.widget.CardView
 android:id="@+id/lineCard"
 android:layout_width="match_parent"
android:layout_height="120dp"
android:foreground="?attr/selectableItemBackground"
app:cardBackgroundColor="@color/Black">
 <LinearLayout 
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
    android:id="@+id/tvCallerName"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent"
    android:backgroundTint="#00FFFFFF"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:scrollHorizontally="true"
    android:singleLine="true"
    android:textAlignment="center"
    android:textColor="@color/White"
    android:textSize="32sp"/>
   </LinearLayout>
</androidx.cardview.widget.CardView>

添加线性布局,然后在其中放置textview

答案 1 :(得分:0)

首先,以XML创建动画。

 <translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="5000"
    android:fromXDelta="100"
    android:interpolator="@android:anim/linear_interpolator"
    android:repeatCount="infinite"
    android:repeatMode="restart"
    android:toXDelta="-100" />

然后添加动画

textview.startAnimation(AnimationUtils.loadAnimation(this, R.anim.scroll_animation));

对于简单动画,可以使用

<TextView
                android:id="@+id/attatchFilename"
                android:layout_width="170dp"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@id/chooseFile"
                android:layout_below="@id/txtMsg"
                android:layout_marginTop="10sp"
                android:layout_marginLeft="10dp"
                android:text=""
                android:singleLine="true"
                android:focusable="true"
                android:ellipsize="marquee"
                android:marqueeRepeatLimit="marquee_forever" />

也请查看此博客: [https://www.journaldev.com/9481/android-animation-example][1]