• 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>

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

  • 相关阅读:
    linux常用命令---文件操作
    Django 框架中定时触发脚本
    jquery 中选择当前标签下众多相同子标签中的第n个
    Django + DRF + Elasticsearch 实现搜索功能
    django 使用celery 实现异步任务
    python 通过 pymysql模块 操作 mysql 数据库
    django 自定义中间件 middleware
    django 使用其自带的验证系统 进行用户名有效性验证 登录状态验证 登入操作 登出操作
    python脚本 读取excel格式文件 并进行处理的方法
    python 将json格式的数据写入csv格式的文件中
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/4269482.html
Copyright © 2020-2023  润新知