`
ljl_xyf
  • 浏览: 633195 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用TextView显示带图片的效果及为文本添加链接

阅读更多

为了实现在TextView中显示图片,有时对图片的宽度与高度有限制的话,可以对实现进行放大与缩小操作!

 

main.xml

    <?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:orientation="vertical"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        >  
    <TextView    
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content"   
        android:text="@string/hello"  
        />  
    <TextView android:text="TextView01" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>  
    <TextView android:text="TextView02" android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>  
    </LinearLayout>  
 

GridView.java(http://www.my400800.cn )

    package a.gridview;  
      
    import android.app.Activity;  
    import android.graphics.Bitmap;  
    import android.graphics.Canvas;  
    import android.graphics.Matrix;  
    import android.graphics.PixelFormat;  
    import android.graphics.Rect;  
    import android.graphics.drawable.BitmapDrawable;  
    import android.graphics.drawable.Drawable;  
    import android.os.Bundle;  
    import android.widget.TextView;  
      
    public class GridView extends Activity {  
              
            private TextView text;  
            private TextView text1;  
        /** Called when the activity is first created. */  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
            text = (TextView) findViewById(R.id.TextView01);  
            Drawable draw = this.getResources().getDrawable(R.drawable.srvmng);     
            text.setCompoundDrawablesWithIntrinsicBounds(null, draw, null,null);  
            text.setText("应用");  
              
            text1 = (TextView) findViewById(R.id.TextView02);  
            Drawable draw1 = this.getResources().getDrawable(R.drawable.srvmng);    
            int w = draw1.getIntrinsicWidth();  
            int h = draw1.getIntrinsicHeight();  
            Rect rect = draw1.getBounds();  
            text1.setCompoundDrawablesWithIntrinsicBounds(null, zoomDrawable(draw1,32,32), null,null);  
            text1.setText("设置");  
        }  
          
        static Drawable zoomDrawable(Drawable drawable, int w, int h)  
        {  
                  int width = drawable.getIntrinsicWidth();  
                  int height= drawable.getIntrinsicHeight();  
                  Bitmap oldbmp = drawableToBitmap(drawable); // drawable转换成bitmap  
                  Matrix matrix = new Matrix();   // 创建操作图片用的Matrix对象  
                  float scaleWidth = ((float)w / width);   // 计算缩放比例  
                  float scaleHeight = ((float)h / height);  
                  matrix.postScale(scaleWidth, scaleHeight);         // 设置缩放比例  
                  Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height, matrix, true);       // 建立新的bitmap,其内容是对原bitmap的缩放后的图  
                  return new BitmapDrawable(newbmp);       // 把bitmap转换成drawable并返回  
        }  
      
        static Bitmap drawableToBitmap(Drawable drawable) // drawable 转换成bitmap  
        {  
                  int width = drawable.getIntrinsicWidth();   // 取drawable的长宽  
                  int height = drawable.getIntrinsicHeight();  
                  Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888:Bitmap.Config.RGB_565;         // 取drawable的颜色格式  
                  Bitmap bitmap = Bitmap.createBitmap(width, height, config);     // 建立对应bitmap  
                  Canvas canvas = new Canvas(bitmap);         // 建立对应bitmap的画布  
                  drawable.setBounds(0, 0, width, height);  
                  drawable.draw(canvas);      // 把drawable内容画到画布中  
                  return bitmap;  
        }  
      
    }  
 

显示效果:


 

 

 


给 TextView里面的内容添加链接

 

 

 

之前使用Java开发桌面应用的时候,在JTextPane中添加超链接并且设置监听是个很麻烦的事情,最终我也没找到一个很好的方法。用来开发android就爽了,API封装的不错,添加个超链接变的非常简单。

首先,在TextView所属xml配置文件中,直接添加android:autoLink特性即可,它支持一个或多个(用分割)自定义的值:none、web、email、phone或all。

另外,你还可以用Linkify来添加超链接,下面介绍一下这个类:

Linkify是一个辅助类,通过RegEx样式匹配,自动地在TextView类(和继承的类)中创建超链接。

符合特定的RegEx样式的文本会被转变成可点击的超链接,这些超链接隐式地调用startActivity(new Intent(Intent.ACTION_VIEW, uri)),符合的文本会作为目标URI。

你可以指定任意的字符串样式为链接;方便地,Linkify类提供了预置的通用内容类型(如电话号码和e-mail、web地址)。

Linkify.addLinks静态方法接受一个View来制作链接,还包括一个或多个支持的默认内容类型的位结果。Linkify类提供了一些内容类型:WEB_URLS、EMAIL_ADDRESSES、PHONE_NUMBERS和ALL.

接下来的代码片段显示如何为TextView制作链接显示web和e-mail地址为超链接。当点击时,它们会相应地打开浏览器或e-mail应用程序。

  • TextView textView = (TextView)findViewById(R.id.myTextView);
  • Linkify.addLinks(textView, Linkify.WEB_URLSLinkify.EMAIL_ADDRESSES);

可是有时候我们需要自定义一些超链接,像新浪微博中的@和#,这时候怎么办呢?

为 了定义自己的链接字符串,你需要创建一个RegEx样式来匹配文本,进而显示成超链接。和本地类型一样,通过调用Linkify.addLinks来指定 目标View,但这次,传入的是的RegEx样式。你还可以传入一个前缀,当链接点击时,它会添加到目标URI上。例如:

  • int flags = Pattern.CASE_INSENSITIVE;
  • Pattern p = Pattern.compile(“\\bquake[-9]*\\b”, flags);
  • Linkify.addLinks(myTextView, p, “content://com.paad.earthquake/earthquakes/”);
  • 大小: 29.3 KB
分享到:
评论

相关推荐

    TextView富文本显示

    通常情况下,`TextView`能够简单地展示纯文本,但在某些场景下,我们可能需要更复杂的文本格式,如加粗、斜体、超链接、颜色变化等,这时就需要用到`TextView`的富文本显示功能。本文将深入探讨如何让`TextView`支持...

    可以显示富文本的TextView.zip

    这些方法可能用于处理如自定义样式、图片加载、点击事件监听等特殊情况,让开发者能更灵活地控制文本的显示效果和交互行为。 5. **应用场景**: - **新闻展示**:新闻内容往往包含标题、摘要、正文等部分,且格式...

    TextView如何显示丰富的文本

    本篇文章将深入探讨如何使用`TextView`来显示丰富的文本,包括设置字体、颜色、样式,以及使用链接、图片和自定义视图等。 一、基本使用 `TextView`在XML布局文件中通过`&lt;TextView&gt;`标签定义,例如: ```xml ...

    Android 实现TextView上下滚动效果

    不过,`android:singleLine`属性在API 17及以上版本已被弃用,此时应使用`android:maxLines`属性设置为1来替代。同时,为了启用滚动,还需要将`android:textIsSelectable`属性设置为false,因为它默认开启时会禁用...

    显示富文本的TextView.zip

    在Android开发中,显示富文本(富文本通常包含多种格式,如字体、颜色、链接、图片等)是一项常见的需求。`TextView`是Android系统提供的基础视图组件,用于展示单行或多行文本,但默认情况下它并不支持复杂的富文本...

    textview显示图片的demo

    在Android开发中,TextView通常用于显示纯文本内容,但有时候我们也会有需求在TextView中插入图片,提升用户体验或增加信息的可读性。本示例"textView显示图片的例子_TextImage"将详细介绍如何在TextView中实现图片...

    安卓textView相关-实现更好的文本对齐和显示功能的textview适合用来显示文章.rar

    `android:ellipsize`属性用于处理文本超出`TextView`边界时的行为,例如“end”表示在末尾添加省略号,“marquee”则启用跑马灯效果。同时,`android:maxLines`可以限制`TextView`显示的最大行数,防止文本溢出。 ...

    TextView显示更多的实现

    本篇文章将详细介绍如何实现`TextView`显示更多的功能,包括当文本超出最大行数时显示“更多”链接,以及实现`TextView`的折叠功能。 1. **限制显示行数:** 默认情况下,`TextView`会显示所有文本内容,但我们...

    Android-简单的AndroidKotlin库用于高亮显示TextView中的链接

    然后,将需要高亮显示链接的文本设置到`TextView`上。 3. 使用库高亮链接:调用库提供的函数,如`highlightLinks()`,传入`TextView`对象和文本内容。函数会自动处理文本中的链接,并赋予其可点击的样式。 4. 处理...

    安卓textView相关-TextView中文本的处理.rar

    9. **文本动画**:可以使用`TextAnimator`类为TextView添加动画效果,如淡入淡出、滚动等。 10. **动态加载文本**:在运行时动态更新TextView的内容,常用于获取网络数据后显示。 11. **富文本显示**:通过`...

    textview 展开收起效果

    在Android开发中,TextView是用于显示单行或多行文本的常用组件。然而,在处理大量文本时,如果直接显示所有内容可能会占据过多的屏幕空间,影响用户体验。为了解决这个问题,我们可以实现TextView的展开和收起效果...

    实现TextView圆角效果demo

    在Android开发中,UI设计是不可或缺的一部分,而TextView作为显示文本的基本组件,有时我们需要对其进行定制以达到特定的设计效果,比如让TextView拥有圆角。本文将详细介绍如何在Android中实现TextView的圆角效果,...

    安卓textView相关-TextView的超链接字和不同色彩效果.rar

    在Android开发中,`TextView`是用于显示单行或多行文本的基本组件。它不仅可以展示纯文本,还可以实现一些高级功能,如设置超链接、不同颜色的文本效果等。本资源包"安卓textView相关-TextView的超链接字和不同色彩...

    带边框的TextView

    在Android开发中,TextView是用于显示文本的基本组件。在某些设计需求中,我们可能需要让TextView具有边框,以增加视觉效果或者突出显示特定信息。标题"带边框的TextView"提示我们,这篇博客主要讨论如何为TextView...

    HtmlTextView,在android 3.0或更高版本的textview中显示html代码(特别是处理在互联网上显示图像/图片)。.zip

    `HtmlTextView`是Android开发中的一个开源项目,主要用于在3.0及以上版本的TextView中解析并展示HTML代码,尤其在处理网络上的图像或图片时非常有用。然而,根据描述,这个项目在Android 7.0及更高版本上的表现可能...

    ios-textview 富文本.zip

    但在实际应用中,我们经常需要更丰富的文本样式,例如添加链接、图片、列表、不同颜色和大小的文本块等,这就需要用到富文本(Rich Text)。富文本可以通过`NSAttributedString` 和 `NSMutableAttributedString` 类...

    Android例子源码20多种TextView文字效果例子

    14. **阴影效果**:`android:textShadowColor`、`android:textShadowDx`、`android:textShadowDy`和`android:textShadowRadius`组合使用,为文本添加阴影,增加立体感。 15. **旋转文本**:使用`android:rotation`...

    仿微博获取到TextView中的url地址并且用“网址链接”替换,点击跳转

    在Android应用开发中,我们经常会遇到需要在TextView中展示带有超链接的内容,比如微博或社交媒体应用。本教程将深入探讨如何在TextView中检测并替换URL,使其成为可点击的链接,点击后能够跳转到相应的网页。这个...

    TextView实现无下划线的url链接

    在Android开发中,`TextView` 是一个非常常用的组件,用于显示单行或多行文本。有时候,我们希望在`TextView`中展示URL链接,但不希望它们带有默认的下划线,以达到更美观或者更符合设计需求的效果。本文将详细讲解...

    textview网页链接

    在Android开发中,TextView是用于显示单行或多行文本的常用组件。当涉及到在TextView中嵌入可点击的网页链接时,开发者需要了解如何在文本中设置超链接,并且处理用户的点击事件,以便用户能够方便地打开网页。下面...

Global site tag (gtag.js) - Google Analytics