zoukankan      html  css  js  c++  java
  • Android_TextView之跑马灯效果

      对于android控件中的TextView,相信大家一定不陌生,在显示文本内容时十分方便。不过我在使用时遇到一个小问题,就是当文字交多时,如何为用户进行展示。今天就为大家介绍一种解决方案--跑马灯效果。

      首先为了达到这个效果,我在访问了一下度娘,得到的答案是这样的,看似解决了,却存在一个问题,先给大家看一下效果:

    代码:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
        android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
        android:orientation="vertical"
        >
    
        <TextView
            android:text="@string/text"
            android:textSize="20sp"
            android:singleLine="true"//保证文本内容单行显示
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:id="@+id/textView1" />
    
        <TextView
            android:text="@string/text"
            android:textSize="20sp"
            android:singleLine="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:id="@+id/textView2" />
    <LinearLayout>

      红色标注的即为广大网友提供的解决方法,那效果到底如何呢?经过测试显示,当只有一个TextView控件时完美达到预期,但是当View中出现两个以上TextView控件时效果,将不复存在,所以这种解决方案不是十分的完美。

      那是什么原因导致的呢?其实很简单,是因为当存在两个TextView时,默认选中其中的一个,另一个则不被选中,所以显示时只有一个有这种效果,现在就为大家提供一个解决方法:

      新建一个free_TextView.java Class文件,使其继承至TextView,然后实现TextView的三个构造方法,方法无需进行任何修改。

    代码:

    package com.example.administrator.textview_new;
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.widget.TextView;
    
    /**
     * Created by Administrator on 2015/2/3.
     * 自定义TextView控件
     */
    public class free_TextView extends TextView{
        public free_TextView(Context context) {
            super(context);
        }
    
        public free_TextView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public free_TextView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
        }
    
        @Override
        public boolean isFocused() {
            return true;//一定要设置为true这样才能保证所有的TextView均为选中状态
        }
    }

    布局文件代码:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
        android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
        android:orientation="vertical"
        >
    
        <com.example.administrator.textview_new.free_TextView
            android:text="@string/text"
            android:textSize="20sp"
            android:singleLine="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:id="@+id/textView1" />
    
        <com.example.administrator.textview_new.free_TextView
            android:text="@string/text"
            android:textSize="20sp"
            android:singleLine="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:id="@+id/textView2" />
    
    </LinearLayout>

      到这里我们的跑马灯效果就算大功告成。

  • 相关阅读:
    C#利用反射动态调用类及方法
    系统程序监控软件
    SQL server 2008 安装和远程访问的问题
    sql server 创建临时表
    IIS 时间问题
    windows 2008 安装 sql server 2008
    sql server xml nodes 的使用
    Window 7sp1 安装vs2010 sp1 打开xaml文件崩溃
    CSS资源网址
    Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/4269482.html
Copyright © 2011-2022 走看看