在Eclipse 中创建Android项目,实现为文本框中的E-mail地址添加超链接、显示带图像的文本、显示不同颜色的单行文本和多行文本。
时间: 2024-03-22 10:40:02 浏览: 66
meu-android-sdk:连接到 MeU 并显示文本或图像的简单实现
好的,下面是一个完整的示例代码,可以实现为文本框中的E-mail地址添加超链接、显示带图像的文本、显示不同颜色的单行文本和多行文本:
activity_main.xml 文件:
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入文本" />
</LinearLayout>
```
MainActivity.java 文件:
```
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.util.Patterns;
import android.view.View;
import android.widget.EditText;
import java.util.regex.Pattern;
public class MainActivity extends AppCompatActivity {
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.edit_text);
// 为文本框中的 E-mail 地址添加超链接
addLink();
// 显示带图像的文本
addImage();
// 显示不同颜色的单行文本
addColorText();
// 显示不同颜色的多行文本
addMultiColorText();
}
private void addLink() {
String text = "我的 E-mail 地址是 myemail@example.com";
SpannableString spannableString = new SpannableString(text);
Pattern pattern = Patterns.EMAIL_ADDRESS;
Linkify.addLinks(spannableString, pattern, "mailto:");
editText.setText(spannableString);
editText.setMovementMethod(LinkMovementMethod.getInstance());
}
private void addImage() {
SpannableString spannableString = new SpannableString("这是一张图片:");
Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
ImageSpan imageSpan = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
spannableString.setSpan(imageSpan, 6, 7, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
editText.append(spannableString);
}
private void addColorText() {
SpannableString spannableString = new SpannableString("这是一段彩色文本");
ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.RED);
spannableString.setSpan(colorSpan, 4, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
editText.append(spannableString);
}
private void addMultiColorText() {
SpannableStringBuilder builder = new SpannableStringBuilder();
String text1 = "这是第一行文本\n";
String text2 = "这是第二行文本\n";
String text3 = "这是第三行文本\n";
ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.BLUE);
builder.append(text1);
builder.setSpan(colorSpan, 4, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
builder.append(text2);
builder.setSpan(colorSpan, 4, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
builder.append(text3);
builder.setSpan(colorSpan, 4, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
editText.append(builder);
}
}
```
在这个示例代码中,我们首先在 onCreate() 方法中获取了 EditText 控件的引用,然后依次调用了 addLink()、addImage()、addColorText() 和 addMultiColorText() 方法来实现为文本框中的E-mail地址添加超链接、显示带图像的文本、显示不同颜色的单行文本和多行文本。在 addLink() 方法中,我们使用 Linkify 类来添加超链接,并设置了 EditText 控件的 MovementMethod 属性为 LinkMovementMethod.getInstance(),以使超链接可以被点击。在 addImage() 方法中,我们创建了一个 SpannableString 对象,并使用 ImageSpan 类来添加图片。在 addColorText() 和 addMultiColorText() 方法中,我们使用 ForegroundColorSpan 类来设置文本的颜色。
希望这个示例代码可以帮助您实现您的需求。
阅读全文