如何在Android中设置按钮文本动画?

如何在Android中设置按钮文本动画?,android,button,text,android-animation,Android,Button,Text,Android Animation,我有一个按钮,上面写着文字,这个文字可能很大,所以它不适合按钮宽度,所以,我希望该文字在该按钮中水平设置动画,如果可能,我需要在按钮的特定部分设置动画,因为其他部分将被按钮背景图像占据: 这就是问题所在: 我想应用的解决方案是: 这就是我尝试过但没有成功的地方: <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="0dp" a

我有一个按钮,上面写着文字,这个文字可能很大,所以它不适合按钮宽度,所以,我希望该文字在该按钮中水平设置动画,如果可能,我需要在按钮的特定部分设置动画,因为其他部分将被按钮背景图像占据:

这就是问题所在:

我想应用的解决方案是:

这就是我尝试过但没有成功的地方:

<Button
    android:id="@+id/button1"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:layout_gravity="center"
    android:adjustViewBounds="true"
    android:layout_margin="3dp"
    android:gravity="left"
    android:background="@drawable/bg"
    android:textAlignment="center"
    android:text="Text Here Is Large"
    android:scrollHorizontally="true"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:lines="1"
    android:textSize="14sp"
    android:textColor="@android:color/white"
    android:paddingBottom="5dp"
    android:paddingLeft="3dp"
    android:paddingRight="3dp"
    android:paddingTop="5dp"
    android:clickable="true"
    android:tag="tag1" />

添加以下行可以使选框效果生效:

android:singleLine="true"
如果一个按钮有焦点,字幕将运行

重要:

可选:

在XML中:

 <Button
    android:layout_width="150dip" 
    android:layout_height="wrap_content"
    android:text="My button with a long text for marquee as a example source code"
    android:singleLine="true"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="1"/>

我通过在FrameLayout中将按钮和自定义文本视图放在一起解决了这个问题,这个自定义文本视图是从中获得的,下面是我如何制作它的:

<FrameLayout
  android:layout_width="match_parent"
  android:layout_height="0dp"
  android:layout_margin="3dp"
  android:layout_weight="1" >

  <Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:adjustViewBounds="true"
    android:background="@drawable/some_image"
    android:clickable="true"
    android:tag="button1_tag" />

  <com.example.ScrollingTextView
    android:id="@+id/button1_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:lines="1"
    android:marqueeRepeatLimit="marquee_forever"
    android:paddingBottom="5dp"
    android:paddingLeft="2dp"
    android:paddingRight="26dp"
    android:paddingTop="3dp"
    android:singleLine="true"
    android:text="zone1"
    android:textColor="@android:color/white"
    android:textSize="14sp" />

</FrameLayout>

发布完整的布局文件
 <Button
    android:layout_width="150dip" 
    android:layout_height="wrap_content"
    android:text="My button with a long text for marquee as a example source code"
    android:singleLine="true"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="1"/>
<FrameLayout
  android:layout_width="match_parent"
  android:layout_height="0dp"
  android:layout_margin="3dp"
  android:layout_weight="1" >

  <Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:adjustViewBounds="true"
    android:background="@drawable/some_image"
    android:clickable="true"
    android:tag="button1_tag" />

  <com.example.ScrollingTextView
    android:id="@+id/button1_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:lines="1"
    android:marqueeRepeatLimit="marquee_forever"
    android:paddingBottom="5dp"
    android:paddingLeft="2dp"
    android:paddingRight="26dp"
    android:paddingTop="3dp"
    android:singleLine="true"
    android:text="zone1"
    android:textColor="@android:color/white"
    android:textSize="14sp" />

</FrameLayout>