Android 手機衛士--自訂控制項(擷取焦點的TextView),androidtextview

來源:互聯網
上載者:User

Android 手機衛士--自訂控制項(擷取焦點的TextView),androidtextview

本文地址:http://www.cnblogs.com/wuyudong/p/5906735.html,轉載請註明源地址。

本文將實現標題列下面的textview中的文字跑馬燈的效果,就是將一行文字水平迴圈滾動,效果如下:

實現代碼如下:

    <!-- android:ellipsize="end"添加省略點的所在位置 -->    <!-- 想讓文字出現跑馬燈效果,必須讓其擷取焦點 -->    <!-- android:marqueeRepeatLimit="marquee_forever"一直滾動屬性 -->    <!-- 自訂控制項達到滾動效果(其實就是重新原有的TextView,讓其一直能夠擷取焦點即可) -->    <TextView         android:text="這是一個跑馬燈,這是一個跑馬燈,這是一個跑馬燈,這是一個跑馬燈,這是一個跑馬燈,"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:ellipsize="marquee"        android:focusable="true"        android:focusableInTouchMode="true"        android:marqueeRepeatLimit="marquee_forever"        android:padding="5dp"        android:textColor="#000"        android:singleLine="true"        />

如果其他地方也需要這樣的跑馬燈效果,複製代碼比較麻煩。這裡使用自訂控制項來實現滾動效果(其實就是重新原有的TextView,讓其一直能夠擷取焦點即可) 

建立一個包view,專門放自訂控制項檔案

建立FocusTextView類

添加代碼:

package com.wuyudong.mobilesafe.view;import android.content.Context;import android.util.AttributeSet;import android.widget.TextView;/** * @author wuyudong  * 能夠擷取焦點的自訂TextView *  */public class FocusTextView extends TextView {    // 使用在通過java代碼建立控制項    public FocusTextView(Context context) {        super(context);    }    // 由系統調用(帶屬性+上下文環境構造方法)    public FocusTextView(Context context, AttributeSet attrs) {        super(context, attrs);    }    // 由系統調用(帶屬性+上下文環境構造方法+布局檔案中定義樣式檔案構造方法)    public FocusTextView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    // 重寫擷取焦點的方法    @Override    public boolean isFocused() {        // return super.isFocused();        return true;    }}

布局代碼替換為:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        style="@style/TitleStyle"        android:text="功能列表" />    <!-- android:ellipsize="end"添加省略點的所在位置 -->    <!-- 想讓文字出現跑馬燈效果,必須讓其擷取焦點 -->    <!-- android:marqueeRepeatLimit="marquee_forever"一直滾動屬性 -->    <!-- 自訂控制項達到滾動效果(其實就是重新原有的TextView,讓其一直能夠擷取焦點即可) -->    <!--      <TextView         android:text="這是一個跑馬燈,這是一個跑馬燈,這是一個跑馬燈,這是一個跑馬燈,這是一個跑馬燈,"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:ellipsize="marquee"        android:focusable="true"        android:focusableInTouchMode="true"        android:marqueeRepeatLimit="marquee_forever"        android:padding="5dp"        android:textColor="#000"        android:singleLine="true"/> -->    <com.wuyudong.mobilesafe.view.FocusTextView        android:text="這是一個跑馬燈,這是一個跑馬燈,這是一個跑馬燈,這是一個跑馬燈,這是一個跑馬燈,"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:ellipsize="marquee"        android:marqueeRepeatLimit="marquee_forever"        android:padding="5dp"        android:textColor="#000"        android:singleLine="true">    </com.wuyudong.mobilesafe.view.FocusTextView></LinearLayout>

總結一下自訂控制項

自訂控制項編寫流程
建立一個預設就能擷取焦點的TextView

1、建立一個類繼承至TextView,FocusTextView

2、重寫其構造方法

public class FocusTextView extends TextView {    // 使用在通過java代碼建立控制項    public FocusTextView(Context context) {        super(context);    }    // 由系統調用(帶屬性+上下文環境構造方法)    public FocusTextView(Context context, AttributeSet attrs) {        super(context, attrs);    }    // 由系統調用(帶屬性+上下文環境構造方法+布局檔案中定義樣式檔案構造方法)    public FocusTextView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    // 重寫擷取焦點的方法    @Override    public boolean isFocused() {        // return super.isFocused();        return true;    }}

3、將原有TextView上的isFocus方法預設修改為,能夠擷取焦點

    // 重寫擷取焦點的方法    @Override    public boolean isFocused() {        // return super.isFocused();        return true;    }

4.使用過程

擷取當前類的全路徑名稱,作為xml中的標籤存在,其餘屬性的使用方式和TextView一致

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.