一、属性
android:
设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)
android:autoText=
如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。可选值(true/false)
android:bufferType 指定getText()方式取得的文本类别。NORMAL和EDITABLE,类似于StringBuilder可追加字符,也就是说getText后可调用append方法
设置文本内容。spannable则可在给定的字符区域使用样式。
android:capitalize控制是否将用户输入的文本转为对应的大写字母。可选值(none不转换/sentences每个句子的首字母大写/words每个单词的首字母大
写/characters每个字母都大写)
android:cursorVisible设置该文本框的光标是否可见。可选值(true/false)
android:digits设置允许输入哪些字符,“1234567890.+-*/%\n()”.可选值为字符串
android:drawableBottom 在text的下方输出一个drawable,如图片。如果指定一个颜色的话会把text的背景设为该颜色,并且同时和background使用时覆盖后者。
android:drawableTop
在text的上面输出一个drawable
android:drawableLeft
在text的左边输出一个drawable,如图片。
android:drawableRight 在text的右边输出一个drawable
android:drawableStart 在text的开始输出一个drawable
android:drawableEnd在text的结尾输出一个drawable
android:drawablePadding=""设置文本框内文本与内容的距离
android:editable=""设置文本框内文本是否允许编辑,textView时即使设置为true也不能编辑
android:ellipsize=""android:ellipsize 设置当文字过长时,该控件该如何显示。有如下值设置:“none”不做任何处理;”start”—?省略号显示在开头;”end”——省 略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)
android:ems设置组件的宽度,以em为单位。
android:fontFamily设置文本框内文子的字体
android:freezesText
设置保存文本的内容以及光标的位置。
android:gravity
设置文本的对齐方式
android:hint=""设置文本的内容为空时,默认显示的内容
android:imeActionId当该文本框关联输入法时,为输入法提供Editorinfo.actionId值
android:imeActionLabel当该文本框关联输入法时,为输入法提供Editorinfo.actionLabel值
android:imeOptions当该文本框关联输入法时,为输入指定额外的选项
android:includeFontPadding设置是否为字体保留足够的空间。
android:inputMethod
为文本指定输入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin。
android:inputType
设置文本的类型,用于帮助输入法显示合适的键盘类型。
android:lineSpacingExtra=""控制两行文本间的额外间距,与android:lineSpacingMultiplier=""配合使用
android:lineSpacingMultiplier=""控制两行文本间的额外间距。每行文本为 高度*该属性值+android:lineSpacingExtra的属性值
Android系统中TextView默认显示中文时会比较紧凑,不是很美观。为了让每行保持一定的行间距,可以设置属性android:lineSpacingExtra或android:lineSpacingMultiplier。
android:lineSpacingExtra设置行间距,如”3dp”。
android:lineSpacingMultiplier设置行间距的倍数,如”1.2″。
android:lines=""设置该文本框默认占几行
android:linksClickable=""控制该文本框的链接是否可点击
android:marqueeRepeatLimit="" 控制marquee动画重复的次数
android:maxEms
设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。
android:minEms
设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。
android:maxHeight=""设置文本框的最大高度
android:maxLength=""设置文本框的最大长度
android:maxLines=""设置文本框的最多占的行数
android:maxWidth=""设置文本框的最大宽度
android:minHeight=""设置文本框的最小高度
android:minLength=""设置文本框的最小长度
android:minLines=""设置文本框的最少占的行数
android:minWidth=""设置文本框的最小宽度
android:numeric=""设置该文本框关联的数值输入法。(可选项integer指定关联整数输入法;signed允许输入符号的数值输入法;decimal允许输入小数点的数值输入法)
android:password=""设置该文本框是一个秘密框,以点代替字符。
android:phoneNumber=""设置该文本框只能接受电话号码
android:privateImeOptions=""设置输入法选项,textView无效
android:scrollHorizontally=""设置文本超出TextView的宽度的情况下,是否出现横拉条
android:selectAllOnFocus=""设置获得焦点是是否自动选中所有内容,textView无效
android:shadowColor
指定文本阴影的颜色,需要与shadowRadius一起使用。
android:shadowDx
设置阴影横向坐标开始位置。
android:shadowDy
设置阴影纵向坐标开始位置。
android:shadowRadius 设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。
android:singleLine
设置单行显示。当文本不能全部显示时,后面用“…”来表示
android:text=""
文本内容
android:textAllCaps=""
设置是否将文本框内的内容显示为大写字母
android:textAppearance=""设置文本框中文字的颜色、字体、大小等样式
android:textColorHighlight 被选中文字的底色,默认为蓝色
android:textColorHint 设置提示信息文字的颜色,默认为灰色。与hint一起使用。
android:textColorLink 文字链接的颜色.
android:textIsSelectable=""设置该文本框不能编辑时,文本框的文本是否可以选中
android:textScaleX=""设置该文本框中的文字在水平方向的缩放因子
android:textStyle
设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2]可以设置一个或多个,用“|”隔开
android:typeface
设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]
android:width
设置文本区域的宽度
二、跑马灯效果:内容要超过屏幕宽度才能使用该效果
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="hahcdsahvflkjdsahahcdsahvflkjdsahahcdsahvflkjdsahahcdsahvflkjdsahahcdsahvflkjdsahahcdsahvflkjdsa"
/>
三、TextView组件改变部分文字的颜色:
TextView textView =
(TextView)findViewById(R.id.textview);
//方法一:
textView.setText(Html.fromHtml("红色其它颜色"));
//方法二:
String text = "获得银宝箱!";
SpannableStringBuilder style=new
SpannableStringBuilder(text);
style.setSpan(new
BackgroundColorSpan(Color.RED),2,5,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//设置指定位置textview的背景颜色
style.setSpan(new
ForegroundColorSpan(Color.RED),0,2,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//设置指定位置文字的颜色
textView.setText(style);
四、
下划线,
中划线
1.textView设置下划线
textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG );
//下划线
textView.getPaint().setAntiAlias(true);//抗锯齿
2.textView设置中划线
textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG);
//中划线
setFlags(Paint.
STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG); //
设置中划线并加清晰
3.textView取消中划线或者下划线
textView.getPaint().setFlags(0); //
取消设置的的划线
五、图文混排,图片在文字后面
方法1:
public class MainActivity extends Activity
{
private
TextView tv2;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv2 = (TextView)
findViewById(R.id.tv2);
tv2.setText(Html.fromHtml(
"测试测试测试测试测试测测试测试测试测试测试测试测试测试测试测试测试测" + "
+ R.drawable.ic_launcher + "\">"
+ "
+ R.drawable.ic_launcher + "\">",
imageGetter, null));
}
//1.图片为Drawable文件夹下的
ImageGetter
imageGetter = new ImageGetter() {
@Override
public Drawable
getDrawable(String source) {
int id =
Integer.parseInt(source);
Drawable d =
getResources().getDrawable(id);
d.setBounds(0, 0, d.getIntrinsicWidth(),
d.getIntrinsicHeight());
return d;
}
};
//2.图片为URL获取的
ImageGetter imgGetter = new Html.ImageGetter() {
public Drawable
getDrawable(String source) {
Drawable drawable = null;
Log.d("Image Path", source);
URL url;
try {
url = new
URL(source);
drawable =
Drawable.createFromStream(url.openStream(), "");
} catch (Exception e) {
return
null;
}
drawable.setBounds(0, 0,
drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
return drawable;
}
};
}
方法2:
Bitmap b =
BitmapFactory.decodeResource(getResources(), R.drawable.hanguo);
ImageSpan imgSpan = new ImageSpan(this, b);
SpannableString spanString = new
SpannableString("icon");
spanString.setSpan(imgSpan, 0, 4,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView2.setText(spanString);
textView2.append("测试测试测试测试测试测测试测试测试测试测试测试测试测试测试测试测试测");
六、带滚动条的TextView
当文字很多时View的高度不能超过一个固定的值,当文字很少时View的高度小于那个固定值时,按View的高度显示。因为ScrollView没有maxHeight,无法满足需求。
View本身是可以设置ScrollBar,这样就不一定需要依赖ScrollView了。TextView有个属性maxLine,这样也就满足了需求了,只要设置一个TextView带ScrollBar的,然后设置maxLine就可以了。
Xml代码 收藏代码
android:id="@+id/text_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="false"
android:maxLines="10"
android:scrollbars="vertical"
/>
还需要在代码了设置TextView可以滚动。
Java代码
TextView textView =
(TextView)findViewById(R.id.text_view);
textView.setMovementMethod(ScrollingMovementMethod.getInstance());
七、TextView 获取
左,上,右,下四个位置的Drawable图片
getCompoundDrawables()方法.该方法返回包含控件左,上,右,下四个位置的Drawable的数组
八、获取textView的行数
mTextView.getViewTreeObserver().addOnGlobalLayoutListener(new
OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {//
TODO Auto-generated method stubLog.e(TAG,
"行数"+mTextView.getLineCount());
mTextView.getViewTreeObserver().removeGlobalOnLayoutListener(this);}});
九、获取textView每行的内容
tv=(TextView)findViewById(R.id.tv);
Layout
layout=tv.getLayout();//layout.draw(canvas);intline=tv.getLayout().getLineCount();String
result="";String text=layout.getText().toString();for(inti=0;i
十、TextView自动识别手机号,超链接,邮箱等,点击跳转
xml中:andorid:
java代码:String html = "有问题:\n";
html+="www.baidu.com";//这里即使不加协议好HTTP;也能自动被系统识别出来。
textView.setText(html); textView.setAutoLinkMask(Linkify.ALL);
textView.setMovementMethod(LinkMovementMethod.getInstance());
十一、一个textview添加多个点击事件
private void setComment(final String fromName, final String toName, String otherString, TextView textView) {
String comment = fromName + "回复" + toName + ":" + otherString;
SpannableString spannableString = new SpannableString(comment);
spannableString.setSpan(new Clickable(click), 0, fromName.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(new Clickable(clickListener), fromName.length() + 2, fromName.length() + 2 + toName.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
textView.setMovementMethod(LinkMovementMethod.getInstance());//不添加这句没有效果
}
private OnClickListener click = new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(CommonActivity.this, "第一个被点击了", Toast.LENGTH_SHORT).show();
}
};
private OnClickListener clickListener = new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(CommonActivity.this, "第二个被点击了", Toast.LENGTH_SHORT).show();
}
};
class Clickable extends ClickableSpan {
private final View.OnClickListener mListener;
public Clickable(View.OnClickListener l) {
mListener = l;
}
@Override
public void onClick(View v) {
mListener.onClick(v);
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);// 设置文字下划线不显示
ds.setColor(Color.RED);// 设置字体颜色
}
}