android TextView 添加超链接
【黑马程序员】TextView中显示表情图片、超链接及特殊字体

【黑马程序员】TextView中显示表情图片、超链接及特殊字体通常情况下,我们使用TextView展示的都是单一的文字内容,格式也比较固定。
不过有时候我们需要对TextView中的文字进行处理,例如QQ聊天的时候,“/wx”就代表了微笑的表情,在文本显示的时候就要替换成图片的形式展示。
而且,有些场景下需要我们在一串文本中掺杂一个超链接、把某个词组加粗显示等等。
这时候都要我们对TextView中的内容进行处理了,如果大家出现了这样的需求,推荐大家使用一个Android中的特殊的类——SpannableString。
首先我们看一些这个类的继承关系,可以看出,SpannableString是实现了CharSequence接口的,所以我们可以把这个类的对象直接设置给TextView和EditText使用。
而对字符串的处理都是通过SpannableString 的setSpan(Object what, int start, int end,int flags)方法调用设置的,这里接收三个参数,第一个参数为设置的Span类型,我们接下来会详细展示,第二个和第三个参数代表文本需要处理的开始和结束的位置,最后一个参数是Span的位置是否包含开始位置和结束位置本身。
接下来我们直接上代码,看一看它在各个场景下的使用。
先看第一种案例,类似于QQ表情,我们要把特殊的字符串替换为表情图片来展示。
这里我们先把SpannableString创建出来,构造接受的参数就是我们需要处理的字符串,创建完成之后就可以通过setSpan的方式替换文本中的内容了。
这里我们通过正则表达式替换了所有的“<img>”为应用程序的默认图标,在展示结果的时候,上方的TextView 我们展示未处理的文本,下方的TextView展示处理后的内容。
01 02 03 04 0506 07 08 09 10 11 12 13 // 示例1,将文字中的特定字符转换为图片显示String string 1 = "把文字中的<img>替换为应用程序图标<img><img>";// 多次更改内容需要使用SpannableStringSpannableString spannableString 1 = new SpannableString (string 1);String regex = "<img>";Pattern pattern = pile (regex );Matcher matcher = pattern.matcher (string 1);while (matcher.find ()) {spannableString 1.setSpan (new ImageSpan (this , R.mipmap.ic_launcher ), matcher.start (),matcher.end (), Spanned.SPAN_INCLUSIVE_INCLUSIVE );}tv_1.setText (string 1);tv_1_span.setText (spannableString 1);执行效果如下,可以看出,文本的“<img>”都已经替换为了图片:如果我们把所有的表情规则都预定义好存入数据库中,就可以进行动态的规则匹配来实现QQ 表情的效果了。
Android记事本

1.只是在主程序里面添加此代码:TextView textView = new TextView(this);textView.setText("你好啊");setContentView(textView);就会在Android虚拟机上显示“你好啊”2.只在Main.xml里面添加代码:<TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="你好"/>3.4.设置超链接:android:autoLink=”all”5.跑马灯:android:singleLine=”true”把所以要跑马灯的都显示成一行android:focusable="true"android:ellipsize="marquee"android:marqueeRepeatLimit="marquee_forever"android:focusableInTouchMode="true"6.设置字体颜色:TextView tv = (TextView) findViewById();String str = "欢迎大家收看《Android开发从零开始》系列课程,感谢大家的支持。
";SpannableStringBuilder style = new SpannableStringBuilder(str); style.setSpan(new ForegroundColorSpan(Color.RED), 0, 6,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);style.setSpan(new ForegroundColorSpan(Color.GREEN), 6, 21,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);style.setSpan(new ForegroundColorSpan(Color.BLUE), 21, 26,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);tv.setText(style);7.8.@动画,是android 自带的an1.setDuration(1000);休息的时间问1000毫秒imgv1.startAnimation(an1);// startAnimation 启动动画9.给自己的界面设置空间大小Android:layout_weight=”X”10.实现图片的循环a先取得getContext的返回最大值Public int getContext(){Return Integer.MAX_VALUE;}b有就是设置图片给ImageView对象Imageview.setImageResource(resides[position%resIds.length]);c.我们还可以给图片添加一个边框首先定义一个int mGalleryItemBackground;,然后取得Gallery属性的Index id的值public ImageAdapter(Context c) {mContext = c;// 使用在res/value/attrs.xml中的Gallery属性TypedArray a = obtainStyledAttributes(R.styleable.Gallery);// 取得Gallery属性的Index idmGalleryItemBackground = a.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0);// 让对象的styleable属性能够反复使用a.recycle();}在res/value/attrs.xml的代码<declare-styleable name="Gallery"><attr name="android:galleryItemBackground"/></declare-styleable>11.AlertDialog的使用AlertDialog.Builder builder = new AlertDialog.Builder(C018_onDoubleClickActivity.this);builder.setTitle("双击");builder.setMessage("Very Good");builder.show();图片的淡进淡出:AlphaAnimationaa = new AlphaAnimation(1, 0);// 1, 0从透明到不透明图片的移动:TranslateAnimationta = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF, 0.5f);ta.setDuration(3000); //显示的时间startAnimation(al);//启动startAnimation(ta);图片的旋转:RotateAnimationra = new RotateAnimation(0, 720, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);图片的伸缩:ScaleAnimationsa = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);帧动画Alpha渐变效果共同属性fromX, toX, fromY, toY, pivotXType, pivotXValue, pivotYType, pivotYValueTabHost添加背景图片tabHost.addTab(tabHost.newTabSpec("Second").setIndica tor("Second",getResources().getDrawable(android.R.dra wable.alert_dark_frame)));用Timer获取系统的时间;;@Overridepublicint onStartCommand(Intent intent, int flags, int startId) {timer = new Timer();task = new TimerTask() {@Overridepublicvoid run() {Calendar c = Calendar.getInstance();String time = c.get(Calendar.HOUR_OF_DAY) + ":"+ c.get(Calendar.MINUTE) + ":" +c.get(Calendar.SECOND);System.out.println(time);}};timer.schedule(task, 1000, 1000);returnsuper.onStartCommand(intent, flags, startId);}。
【推荐下载】Android的TextView使用Html来处理图片显示、字体样式、超链接等

Android 的TextView 使用Html 来处理图片显示、字体样式、超链接等2012/02/09 0 一、[Android 实例]实现TextView 里的文字有不同颜色转eoe:eoeandroid/thread-4496-1-1.htmlimport android.text.Html;TextView t3 = (TextView) findViewById(R.id.text3);t3.setText( Html.fromHtml( b text3: /b Text with a a href=\ google\ link/a created in the Java source code using HTML. ));二、TextView 显示html 文件中的图片转javaeye:da-en.javaeye/blog/712415我们知道要让TextView 解析和显示Html 代码。
可以使用Spanned text = Html.fromHtml(source);tv.setText(text);来实现,这个用起来简单方便。
但是,怎样让TextView 也显示Html 中image 节点的图像呢?我们可以看到fromHtml 还有另一个重构:fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)实现一下ImageGetter 就可以让图片显示了:ImageGetter imgGetter = new Html.ImageGetter() { @Override public Drawable getDrawable(String source) { Drawable drawable = null; drawable = Drawable.createFromPath(source); // Or fetch it from the URL // Important drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable .getIntrinsicHeight()); return drawable; }};至于TagHandler,我们这里不需要使用,可以直接传null。
AndroidTextView添加下划线的几种方式

AndroidTextView添加下划线的⼏种⽅式⼩编推荐总结起来⼤概有5种做法:1. 将要处理的⽂字写到⼀个资源⽂件,如string.xml(使⽤html⽤法格式化)2. 当⽂字中出现URL、E-mail、电话号码等的时候,可以将TextView的android:autoLink属性设置为相应的的值,如果是所有的类型都出来就是android:autoLink="all",当然也可以在java代码⾥做,textView01.setAutoLinkMask(Linkify.ALL);3. ⽤Html类的fromHtml()⽅法格式化要放到TextView⾥的⽂字,与第1种⼀样,只是是⽤代码动态设置4. 设置TextView的Paint属性:tvTest.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线5. ⽤Spannable或实现它的类,如SpannableString来格式部分字符串。
另外附上⼀篇博客介绍:如果是在资源⽂件⾥:1、字符串资源中设置下划线属性<resources><string name="hello"><u>phone:0123456</u></string><string name="app_name">MyLink</string></resources>直接让TextView引⽤字符串资源的name即可。
2、TextView设置autoLink属性<TextView xmlns:android="/apk/res/android"android:id="@+id/text1"android:layout_width="match_parent"android:layout_height="match_parent"android:autoLink="all"android:text="@string/link_text_auto"/>如果是代码⾥:1、使⽤Html.fromHtml()TextView textView = (TextView)findViewById(_test);textView.setText(Html.fromHtml("<u>"+"0123456"+"</u>"));2、使⽤TextView的Paint的属性tvTest.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);//下划线tvTest.getPaint().setAntiAlias(true);//抗锯齿3、使⽤SpannableString类SpannableString content = new SpannableString(str);content.setSpan(new UnderLineSpan, 0, str.length(), 0);代码⾥⾯⾃定义超链接样式:TextView tv=new TextView(this);tv.setText(Html.fromHtml("<a href=\"/CAIYUNFREEDOM\">⾃定义的超链接样式</a>"));// 在单击链接时凡是有要执⾏的动作,都必须设置MovementMethod对象tv.setMovementMethod(LinkMovementMethod.getInstance());CharSequence text = tv.getText();if (text instanceof Spannable){int end = text.length();Spannable sp = (Spannable)tv.getText();URLSpan[] urls = sp.getSpans( 0 , end, URLSpan.class );SpannableStringBuilder style = new SpannableStringBuilder(text);style.clearSpans(); // should clear old spansfor (URLSpan url : urls){URLSpan myURLSpan= new URLSpan(url.getURL());style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);style.setSpan(new ForegroundColorSpan(0xFFFF0000), start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);//设置前景⾊为红⾊ } tv.setText(style);}另外⼀篇⽂章中有⼏个具体的实例可以参考:看完的顺⼿点歌赞呗,谢谢⿎励!。
Android设置当TextView中的文字超过TextView的容量时用省略号代替

Android设置当TextView中的⽂字超过TextView的容量时
⽤省略号代替
有时候在ListView中显⽰Textview时由于长度过长⽽导致text会隔⾏显⽰,UI上看起来就⽐较的不友好。
官⽅提供了相关的实现单⾏显⽰的⽅法。
只需要下边的设置:
textview.setSingleLine();
textview.setEllipsiz(TextUtils.TruncateAt.valueOf("END"));
在xml中设置如下:
android:singleLine="true"
android:ellipsize="end"
中间的singleline设置为true,就可以实现单⾏,且省略号在最后,⽽ellipsize则是控制省略号的位置,分别有start(开
始),middle(中间),end(最后),marquee(跑马灯)。
以上所述是⼩编给⼤家介绍的Android设置当TextView中的⽂字超过TextView的容量时⽤省略号代替,希望对⼤家有所帮助,如果⼤家有任何疑问欢迎给我留⾔,⼩编会及时回复⼤家的!。
安卓手机上使用便签添加超链接怎样识别打开?

• 二、点击目标便签, 进入“查看敬业签” 页面,在该页面点击 超链接,便签软件会 自动跳转至浏览器打 开该敬业签”页面,通过 逐条点击的方式打开 识别超链接。
安卓手机上使用便签添加超链接 怎样识别打开?
• 在安卓手机上记录备忘事项,可以使用多 端同步的便签软件敬业签,自安卓版敬业 签升级至V2.0.4版本后,记录的备忘事项可 添加超链接,怎样识别打开超链接呢?下 面来给大家演示一下。
• 一、打开安卓手机上 使用的便签软件敬业 签,找到要打开超链 接的目标便签;
android TextView 添加超链接

Android 中TextView 添加超链接1、使用android:autoLink="all" 只需在TextView中加入这个属性,而在TextView里面写的文字中包含网址、电话、email的会自动加入连接地址。
如:<TextView xmlns:android="/apk/res/android"android:id="@+id/text1"android:layout_width="match_parent"android:layout_height="match_parent"android:autoLink="all"android:text="@string/link_text_auto"/>2、使用<string name=””><a href=””></a></string>标签,建立超链接:如:<string name="link_text_manual"><b>text2:</b> This is some othertext, with a <a href="">link</a> specifiedvia an <a> tag. Use a \"tel:\" URLto <a href="tel:4155551212">dial a phone number</a>.</string>别忘了TextView t2 = (TextView) findViewById(R.id.text2);t2.setMovementMethod(LinkMovementMethod.getInstance());3、在java文件中使用HTML语言:如:TextView t3 = (TextView) findViewById(R.id.text3);t3.setText(Html.fromHtml("<b>text3:</b>Text with a "+ "<a href=\"\">link</a> "+ "created in the Java source code using HTML."));t3.setMovementMethod(LinkMovementMethod.getInstance());4、字符串截取方法SpannableString ss = new SpannableString("text4: Click here to dial the phone.");ss.setSpan(new StyleSpan(Typeface.BOLD), 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ss.setSpan(new URLSpan("tel:4155551212"),13, 17, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); TextView t4 = (TextView) findViewById(R.id.text4);t4.setText(ss);t4.setMovementMethod(LinkMovementMethod.getInstance());5、Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟ScrollView必须只能有一个直接的子类布局。
android textview 最多十个字 -回复

android textview 最多十个字-回复如何在Android中使用TextView来显示最多十个字?第一步:添加TextView到布局文件中在布局文件中添加一个TextView元素,并设置其属性以限制最多十个字的显示。
在XML布局文件中添加如下代码:xml<TextViewandroid:id="@+id/myTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:maxLines="1"android:ellipsize="end"android:textSize="18sp" />在上述代码中,我们给TextView元素设置了maxLines属性为1,这样就限制了最多只能显示一行文本。
我们还设置了ellipsize属性为end,这样当文本超过十个字时,TextView中的文本末尾将会显示为省略号。
最后,我们设置了textSize属性为18sp,以便适当的显示文本字体大小。
第二步:在Java代码中找到并引用TextView在Java代码中找到并引用我们在XML布局文件中定义的TextView元素。
首先,在Activity的onCreate方法中添加以下代码:javaTextView myTextView = findViewById(R.id.myTextView);在上述代码中,我们使用findViewById方法根据TextView的id来引用该元素。
myTextView变量将会指向我们定义的TextView。
第三步:设置TextView的文本内容在需要设置TextView的文本内容的地方,使用以下代码:javaString text = "This is a sample text.";if(text.length() > 10) {text = text.substring(0, 10);}myTextView.setText(text);在上述代码中,我们首先定义了一个示例文本。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android 中TextView 添加超链接
1、使用android:autoLink="all" 只需在TextView中加入这个属性,而在TextView里面写的文字中包含网址、电话、email的会自动加入连接地址。
如:
<TextView xmlns:android="/apk/res/android"
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:autoLink="all"
android:text="@string/link_text_auto"
/>
2、使用<string name=””><a href=””></a></string>标签,建立超链接:
如:
<string name="link_text_manual"><b>text2:</b> This is some other
text, with a <a href="">link</a> specified
via an <a> tag. Use a \"tel:\" URL
to <a href="tel:4155551212">dial a phone number</a>.
</string>
别忘了
TextView t2 = (TextView) findViewById(R.id.text2);
t2.setMovementMethod(LinkMovementMethod.getInstance());
3、在java文件中使用HTML语言:
如:
TextView t3 = (TextView) findViewById(R.id.text3);
t3.setText(Html.fromHtml("<b>text3:</b>Text with a "
+ "<a href=\"\">link</a> "
+ "created in the Java source code using HTML."));
t3.setMovementMethod(LinkMovementMethod.getInstance());
4、字符串截取方法
SpannableString ss = new SpannableString("text4: Click here to dial the phone.");
ss.setSpan(new StyleSpan(Typeface.BOLD), 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ss.setSpan(
new URLSpan("tel:4155551212"),13, 17, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); TextView t4 = (TextView) findViewById(R.id.text4);
t4.setText(ss);
t4.setMovementMethod(LinkMovementMethod.getInstance());
5、Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟ScrollView必须只能有一个直接的子类布局。
只要在layout中简单设置几个属性就可以轻松实现
<TextView
android:id="@+id/tvCWJ"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical" <!--垂直滚动条-->
android:singleLine="false" <!--实现多行-->
android:maxLines="15" <!--最多不超过15行-->
android:textColor="#FF0000"
/>
当然我们为了让TextView动起来,还需要用到TextView的setMovementMethod方法设置一个滚动实例,代码如下
TextView tvAndroid123 = (TextView)findViewById(CWJ);
tvAndroid123.setMovementMethod(ScrollingMovementMethod.getInstance());
ad_link = (TextView) findViewById(R.id.ad_link);
ad_link.setText(Html.fromHtml("<a
href="\"mce_href="\"""+mURL.getLink()+"\">"+Html.fromHtml(mURL.getLabel()+"</a>"))); ad_link.setMovementMethod(LinkMovementMethod.getInstance());。