Android系统默认给TextView插入图片提供了三种方式:
1、ImageSpan
2、Html.ImageGetter
3、TextView.setCompoundDrawables(left, top, right, bottom)
1、TextView使用ImageSpan显示图片
ImageSpan span = new ImageSpan(this, R.drawable.ic_launcher);
SpannableString spanStr = new SpannableString("http://orgcent.com");
spanStr.setSpan(span, spanStr.length()-1, spanStr.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.setText(spanStr);
PS:关于SpannableString相关的其他span,查看[Android教程]TextView使用SpannableString设置复合文本
2、使用Html.ImageGetter显示网页中的图片
查看文章:[Android教程]TextView显示Html类解析的网页和图片及自定义标签
3、在TextView四周显示图片
mTVText.setText("setCompoundDrawables");
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
d.setBounds(0, 0, 50, 50); //必须设置图片大小,否则不显示
mTVText.setCompoundDrawables(d , null, null, null);
不同点击事件
package com.example.textviewclick;
import android.app.Activity;
import android.os.Bundle;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.URLSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Bundle;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.URLSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
TextView mTextView2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.textview);
mTextView2 = (TextView)findViewById(R.id.text2);
/*********** 同一个TextView不同文字的点击事件*******/
StringBuilder actionText = new StringBuilder();
actionText
.append("<a style=\"text-decoration:none;\" href='username'>"
+ "username:" + " </a>");
actionText
.append("隐形人"
+ "<a style=\"color:blue;text-decoration:none;\" href='singstar'> "
+ " love" + "</a>");
actionText.append(" : \"" + "孙燕姿" + "\"");
mTextView2.setText(Html.fromHtml(actionText.toString()));
mTextView2.setMovementMethod(LinkMovementMethod
.getInstance());
CharSequence text = mTextView2.getText();
int ends = text.length();
Spannable spannable = (Spannable) mTextView2.getText();
URLSpan[] urlspan = spannable.getSpans(0, ends, URLSpan.class);
SpannableStringBuilder stylesBuilder = new SpannableStringBuilder(text);
stylesBuilder.clearSpans(); // should clear old spans
for (URLSpan url : urlspan) {
TextViewURLSpan myURLSpan = new TextViewURLSpan(url.getURL());
stylesBuilder.setSpan(myURLSpan, spannable.getSpanStart(url),
spannable.getSpanEnd(url), spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
mTextView2.setText(stylesBuilder);
}
private class TextViewURLSpan extends ClickableSpan {
private String clickString;
TextView mTextView2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.textview);
mTextView2 = (TextView)findViewById(R.id.text2);
/*********** 同一个TextView不同文字的点击事件*******/
StringBuilder actionText = new StringBuilder();
actionText
.append("<a style=\"text-decoration:none;\" href='username'>"
+ "username:" + " </a>");
actionText
.append("隐形人"
+ "<a style=\"color:blue;text-decoration:none;\" href='singstar'> "
+ " love" + "</a>");
actionText.append(" : \"" + "孙燕姿" + "\"");
mTextView2.setText(Html.fromHtml(actionText.toString()));
mTextView2.setMovementMethod(LinkMovementMethod
.getInstance());
CharSequence text = mTextView2.getText();
int ends = text.length();
Spannable spannable = (Spannable) mTextView2.getText();
URLSpan[] urlspan = spannable.getSpans(0, ends, URLSpan.class);
SpannableStringBuilder stylesBuilder = new SpannableStringBuilder(text);
stylesBuilder.clearSpans(); // should clear old spans
for (URLSpan url : urlspan) {
TextViewURLSpan myURLSpan = new TextViewURLSpan(url.getURL());
stylesBuilder.setSpan(myURLSpan, spannable.getSpanStart(url),
spannable.getSpanEnd(url), spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
mTextView2.setText(stylesBuilder);
}
private class TextViewURLSpan extends ClickableSpan {
private String clickString;
public TextViewURLSpan(String clickString) {
this.clickString = clickString;
}
this.clickString = clickString;
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(MainActivity.this.getResources().getColor(R.color.text_color));
ds.setUnderlineText(false); //去掉下划线
}
@Override
public void onClick(View widget) {
if (clickString.equals("username")) {
Toast.makeText(getApplication(), clickString, Toast.LENGTH_LONG)
.show();
} else if (clickString.equals("singstar")) {
Toast.makeText(getApplication(), clickString, Toast.LENGTH_LONG)
.show();
}
}
}
public void updateDrawState(TextPaint ds) {
ds.setColor(MainActivity.this.getResources().getColor(R.color.text_color));
ds.setUnderlineText(false); //去掉下划线
}
@Override
public void onClick(View widget) {
if (clickString.equals("username")) {
Toast.makeText(getApplication(), clickString, Toast.LENGTH_LONG)
.show();
} else if (clickString.equals("singstar")) {
Toast.makeText(getApplication(), clickString, Toast.LENGTH_LONG)
.show();
}
}
}
}
相关推荐
AndroidRichText帮助实现像QQ,微信一样的,一个TextView里既有文字又有表情又有图片的效果,采用插件化的框架,代码简单,可拓展性强。 基础框架包只有四个java文件, RichTextWrapper :TextView的包裹类,实现...
在Android开发中,`TextView`是用于展示文本的常用组件,它简单易用且功能强大。当需要在`TextView`中不仅展示纯文本,还要加入图片或者超链接时,我们可以利用一些特殊的方法来实现。本篇文章将深入探讨如何在`...
20. **点击事件监听**:通过设置OnClickListener,可以监听TextView的点击事件,实现相应功能。 这些示例涵盖了TextView的基本和高级用法,开发者可以根据需求灵活运用,为用户提供更丰富的交互体验。通过深入理解...
在Android开发中,`HtmlTextView`是一个用于展示富文本的组件,它扩展了标准的`TextView`类,增加了对HTML格式的支持。富文本通常包含了文本、图像、链接、颜色、字体样式等多种元素,使得文本展示更为生动丰富。...
开发者还可以自定义TextView,扩展其功能,例如增加图片选择、富文本编辑等特性。 总之,TextView是Android开发中不可或缺的一部分,理解和熟练掌握其用法和特性,对于构建高质量的用户界面至关重要。通过深入研究...
为了实现评论的交互功能,比如点击后查看详细信息或回复,我们需要为每个评论的TextView添加点击事件监听器。可以使用`setOnClickListener()`方法,然后在回调中处理相应的业务逻辑。 6. **动态加载和优化性能** ...
- **`android:autoLink`**:此属性用于识别文本中的URL链接、电子邮件地址、电话号码或地图地址,并自动将其转换为可点击的链接。支持的值包括`none`(不转换任何链接)、`web`(仅转换URL链接)、`email`(仅转换...
对于内部超链接,`Linkify`类可以帮助我们自动识别文本中的URL并添加点击事件。同时,我们还可以自定义链接样式: ```java Linkify.addLinks(textView, Linkify.WEB_URLS); Linkify.MatchFilter matchFilter = new ...
- **功能**:设置文本中的URL链接、电子邮件地址、电话号码或地图地址等是否应该被识别为可点击的链接。 - **参数**: - `none`:不进行任何链接转换。 - `web`:仅将URL地址转换为链接。 - `email`:将电子邮件...
9. **链接点击处理** 对于包含网址、邮箱地址或其他可点击内容的文本,AdvancedTextView可以自动识别并处理这些链接,方便用户直接操作。 10. **性能优化** 开源项目往往注重性能优化,AdvancedTextView可能通过...
这段代码展示了三个TextView的设置,第一个用于实现走马灯效果,第二个设置中心对齐并带有左右图片,第三个则设置了自动链接,并包含电话、邮件和网址信息。 总之,这个实验提供了全面的Android UI设计和交互实现...
7. **事件处理**:添加点击事件监听,如点击图片或链接跳转至相应页面。 由于压缩包没有提供具体代码,这里只能给出一般性的解释。实际应用中,开发者可能需要根据具体需求调整和优化这些技术,例如优化性能、处理...
- **android:autoLink**: 设置是否将文本中的URL、email地址、电话号码、地图等转化为可点击的链接。 - **android:autoText**: 设置是否启用拼写检查功能。 - **android:bufferType**: 指定获取文本的方式,支持`...
在实际应用中,我们通常会使用OnClickListener接口来添加点击事件监听,而不是直接在XML中设置`android:onClick`。这样可以使代码更灵活,易于维护: ```java button.setOnClickListener(new View.OnClickListener...
综上所述,实现"android listview实现新闻列表展示效果"需要理解ListView的工作原理,熟练运用Adapter,设计数据模型,创建布局文件,处理点击事件,优化性能,并可能涉及到网络请求和图片加载。通过这个项目,你...
4. **链接点击事件**:AdvancedTextView能够识别并处理文本中的URL,用户可以直接在文本中设置点击事件,实现链接跳转,而无需额外的代码处理。 5. **动画效果**:为了增加用户体验,AdvancedTextView还提供了文本...
在Android开发中,当需要在`TextView`中展示带有超链接的内容时,有两种常见的实现方式。...同时,`setAutoLinkMask()`还可以用于识别和链接其他类型的文本,如电话号码,增加了`TextView`的功能多样性。
在Android中,我们可以使用EditText控件来创建输入框,Button控件用于创建可点击的按钮,TextView则可以用来显示提示文字。为了保护用户隐私,密码输入框可能还会使用InputType属性设置为"password",使得输入内容以...
在Android开发中,按钮(Button)是一个非常基础且重要的组件,它是TextView的一个特殊形式,用于显示文本并响应用户的点击事件。在本节中,我们将深入探讨Android中的Button控件及其在实际应用中的使用。 首先,...