1. 对于需要文本显示的内容过多的时候,需要滚动显示

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:layout_width="fill_parent"

android:layout_height="80dp"

android:fadeScrollbars="false"

android:scrollbarAlwaysDrawVerticalTrack="true"

android:scrollbars="vertical" >

android:layout_width="fill_parent"

android:layout_height="wrap_content" >

android:id="@+id/tv"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@android:color/black"

android:scrollbars="vertical"

android:text="@string/hello_world" />

2.对于需要实现跑马灯似的,自动滚动的,这里是看了github上一个国外的程序员自定义的一个textview

package cn.steve.slidetextview;

import android.content.Context;

import android.util.AttributeSet;

import android.view.animation.LinearInterpolator;

import android.widget.Scroller;

import android.widget.TextView;

/**

* A TextView that scrolls it contents across the screen, in a similar fashion

* as movie credits roll across the theater screen.

*

* @author Matthias Kaeppler

*

*/

public class ScrollingTextView extends TextView implements Runnable {

private static final float DEFAULT_SPEED = 15.0f;

private Scroller scroller;

private float speed = DEFAULT_SPEED;

private boolean continuousScrolling = true;

public ScrollingTextView(Context context) {

super(context);

setup(context);

}

public ScrollingTextView(Context context, AttributeSet attributes) {

super(context, attributes);

setup(context);

}

private void setup(Context context) {

scroller = new Scroller(context, new LinearInterpolator());

setScroller(scroller);

}

@Override

protected void onLayout(boolean changed, int left, int top, int right,

int bottom) {

super.onLayout(changed, left, top, right, bottom);

if (scroller.isFinished()) {

scroll();

}

}

private void scroll() {

int viewHeight = getHeight();

int visibleHeight = viewHeight - getPaddingBottom() - getPaddingTop();

int lineHeight = getLineHeight();

int offset = -1 * visibleHeight;

int distance = visibleHeight + getLineCount() * lineHeight;

int duration = (int) (distance * speed);

scroller.startScroll(0, offset, 0, distance, duration);

if (continuousScrolling) {

post(this);

}

}

@Override

public void run() {

if (scroller.isFinished()) {

scroll();

} else {

post(this);

}

}

public void setSpeed(float speed) {

this.speed = speed;

}

public float getSpeed() {

return speed;

}

public void setContinuousScrolling(boolean continuousScrolling) {

this.continuousScrolling = continuousScrolling;

}

public boolean isContinuousScrolling() {

return continuousScrolling;

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐