android文本类组件总结,TextView常用功能总结

一、属性

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);  //

取消设置的的划线

五、图文混排,图片在文字后面

a4c26d1e5885305701be709a3d33442f.png

方法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(

"测试测试测试测试测试测测试测试测试测试测试测试测试测试测试测试测试测" + "

blog_c0e5619c0102wod2.html

+ R.drawable.ic_launcher + "\">"

+ "

blog_c0e5619c0102wod2.html

+ 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);// 设置字体颜色

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值