xml文件代码

      <com.mobile.APITest.ScrollEditText
android:id="@+id/statusEditText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_weight="1"
android:gravity="top"
android:scrollbarFadeDuration="1000"
android:scrollbarStyle="insideOverlay"
android:scrollbars="vertical"
android:singleLine="false"
android:textColor="@color/black" />

自定义TextView

package com.mobile.APITest;

import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.text.method.ScrollingMovementMethod;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView; import com.mobile.pos.lib.Global.POSCharUtils; /**
* Created by Administrator on 2016/11/23.
*/
@SuppressLint("AppCompatCustomView")
public class ScrollEditText extends TextView {
private static final String TAG = "ScrollEditText";
private boolean pressFlag = false;//判断手指是否按着屏幕,如果是就不需要滚动了。 public ScrollEditText(Context context) {
super(context);
} public ScrollEditText(Context context, AttributeSet attrs) {
super(context, attrs);
} public ScrollEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
} @Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
postDelayed(runnable, 2000);
}
if (event.getAction() == MotionEvent.ACTION_MOVE) {
pressFlag = true;
}
if (event.getAction() == MotionEvent.ACTION_DOWN) {
pressFlag = true;
removeCallbacks(runnable);
}
POSCharUtils.showLogD(TAG, event.getAction() + "");
return super.dispatchTouchEvent(event);
} private Runnable runnable = new Runnable() {
@Override
public void run() {
pressFlag = false;
}
}; @Override
protected void onFinishInflate() {
super.onFinishInflate();
setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
showDialog();
return false;
}
});
setMovementMethod(ScrollingMovementMethod.getInstance());
} public void appendStr(final CharSequence text) {
post(new Runnable() {
@Override
public void run() {
ScrollEditText.super.append(text);
POSCharUtils.showLogD(TAG, text.toString());
if (pressFlag) return;
int scrollAmount = getLayout().getLineTop(getLineCount())
- getHeight();
if (scrollAmount > 0)
scrollTo(0, scrollAmount);
else
scrollTo(0, 0);
}
});
} public void setTextStr(final CharSequence text) {
post(new Runnable() {
@Override
public void run() {
ScrollEditText.super.setText(text);
if (pressFlag) return;
int scrollAmount = getLayout().getLineTop(getLineCount())
- getHeight(); if (scrollAmount > 0)
scrollTo(0, scrollAmount);
else
scrollTo(0, 0);
}
});
} private void scrollTop() {
scrollTo(0, 0);
} private void scrollBottom() {
int scrollAmount = getLayout().getLineTop(getLineCount())
- getHeight();
if (scrollAmount > 0)
scrollTo(0, scrollAmount);
else
scrollTo(0, 0);
}
//信息内容是简单地列表项 public void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this.getContext());
//定义复选框
builder.setItems(new String[]{"顶部", "底部"}, listener);
builder.create().show();
} private DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
scrollTop();
break;
case 1:
scrollBottom();
break;
}
}
};
}

长按ScrollEditText 可以跳转至view的底部或者顶部

安卓自定义TextView实现自动滚动的更多相关文章

  1. android TextView 垂直自动滚动字幕实现

    参考网上一些做法然后进行了修改, 首先继承TextView /** * VerticalScrollTextView.java * 版权所有(C) 2013 * 创建者:cuiran 2013-12- ...

  2. Android 如何实现带滚动条的TextView,在更新文字时自动滚动到最后一行?

    1.在布局文件中放置一个TextView,给它添加scrollbars和fadeScrollbars两个属性. 如下设置:滚动条为垂直滚动条,并且一直可见(当TextView中的文字行数超过页面能显示 ...

  3. Android:TextView 自动滚动(跑马灯) (转)

    Android:TextView 自动滚动(跑马灯)       TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true ...

  4. Android TextView文字横向自动滚动(跑马灯)

    TextView实现文字滚动需要以下几个要点:   1.文字长度长于可显示范围:android:singleLine="true"   2.设置可滚到,或显示样式:android: ...

  5. 自动滚动的TextView

    自动滚动的TextView 效果图 XML文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andr ...

  6. 自定义Behavior 实现Listbox自动滚动到选中项

    原文:自定义Behavior 实现Listbox自动滚动到选中项 blend为我们提供方便的behavior来扩展我们的控件,写好之后就可以在blend中方便的使用了. 下面是自定义的behavior ...

  7. Android源码分析(十二)-----Android源码中如何自定义TextView实现滚动效果

    一:如何自定义TextView实现滚动效果 继承TextView基类 重写构造方法 修改isFocused()方法,获取焦点. /* * Copyright (C) 2015 The Android ...

  8. Android 文字自动滚动(跑马灯)效果的两种实现方法[特别好使]

    有时候在xml中写的跑马灯效果不滚动:原因有以下 Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1.android:ellipsize=”marquee” 2.TextV ...

  9. Android文字跑马灯控件(文本自动滚动控件)

    最近在开发一个应用,需要用到文本的跑马灯效果,图省事,在网上找,但老半天都找不到,后来自己写了一个,很简单,代码如下: import android.content.Context; import a ...

随机推荐

  1. Android自定义控件之日历控件

      标签: android 控件 日历 应用 需求 2015年09月26日 22:21:54 25062人阅读 评论(109) 收藏 举报 分类: Android自定义控件系列(7) 版权声明:转载注 ...

  2. 解决 ASP.NET Core 自定义错误页面对 Middleware 异常无效的问题

    我们基于 Razor Class Library 实现了自定义错误页面的公用类库(详见之前的随笔),但是在实际使用时发现如果在 middleware 中发生了异常,则不能显示自定义错误页面,而是返回默 ...

  3. java_基础_异常

    之前只是了解的最基础的异常形式,没有过多的深入 今天因为一些原因了解了一下 下面来说说异常的几种形式 1.try-catch语句块 代码示例 class test{ public static voi ...

  4. fpga xilink 电平

  5. Multi-Projector Based Display Code ---- Calibration

    Overview As mentioned previously, there are two main steps in generating a seamless display. The fir ...

  6. wx.createSelectorQuery() 获取节点信息 获取不到解决方法

    场景:一个气泡的宽度由加载来的数据填充所决定,不定宽,     wx.createSelectorQuery().selectAll('.talkbubble').boundingClientRect ...

  7. 洛谷P4456 交错序列[CQOI2018] dp+数论

    正解:dp 解题报告: 传送门 首先可以先拆下这个贡献式,为了方便之后设状态什么的,把式子转成和ny有关,就成了 \(\sum \left ( n-i \right )^{a}\cdot i^{b}\ ...

  8. springcloud第四步:ribbon搭建服务负载均衡

    使用ribbon实现负载均衡 启动两个会员服务工程,端口号分别为8762.8763,订单服务 使用负载均衡策略轮训到会员服务接口. 什么是ribbon ribbon是一个负载均衡客户端 类似nginx ...

  9. Python3学习之路~8.5 SocketServer实现多并发

    前面几节我们写的socket都只能实现服务端与一个客户端通信,并不能实现服务端与多客户端同时通信.接下来我们就来学习一下如何实现服务端同时与多个客户端通信,即并发. Socket Server soc ...

  10. Python从入坑到放弃!

    Python基础  python基础 python基础之 while 逻辑运算符 格式化输出等 python基础之 基本数据类型,str方法和for循环 python基础之 列表,元组,字典 pyth ...