有时候需要在页面上显示一些html标记的内容,这时候需要使用本节内容:
Html.fromHtml("html内容")
Html.fromHtml("html内容",imgGetter,null ) //显示图片的话
SpannableString 的使用,这个类是
1 显示普通的html内容
2 显示图片内容
3 html内容中超链接标签生效
4 设置文字样式,字体等等。
5 spannable 添加单击事件
package com.example.fragmentdemo1; import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.Html; import android.text.Html.ImageGetter; import android.text.SpannableString; import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.text.style.AbsoluteSizeSpan; import android.text.style.BackgroundColorSpan; import android.text.style.BulletSpan; import android.text.style.ForegroundColorSpan; import android.text.style.ImageSpan; import android.text.style.RelativeSizeSpan; import android.text.style.ScaleXSpan; import android.text.style.StrikethroughSpan; import android.text.style.StyleSpan; import android.text.style.SubscriptSpan; import android.text.style.SuperscriptSpan; import android.text.style.TypefaceSpan; import android.text.style.URLSpan; import android.text.style.UnderlineSpan; import android.widget.TextView; /** * html 显示textView 应用 */ public class HtmlActivity extends Activity { TextView mTextView = null; SpannableString msp = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.html); //普通的html显示 showPlainTextView(); //带有图片的html标签使用 showImgTextView(); textStyle(); } //text 显示不同颜色的文本 private void showPlainTextView(){ TextView tv = (TextView) findViewById(R.id.htmlText1); tv.setText(Html.fromHtml( "<b>加粗html:</b> Text with a " + "<a href=\"http://www.google.com\">link</a> " + "created in the Java source code using HTML.")); //使超链接生效 否则超链接不能点击 tv.setMovementMethod(LinkMovementMethod.getInstance());//使超链接生效 } //显示图片 private void showImgTextView(){ //R.drawable.fw 图片的id Spanned text = Html.fromHtml("<img src='"+R.drawable.fw+"'/>",imgGetter,null ); TextView v2 = (TextView) findViewById( R.id.htmlText2); v2.setText( text ); } ImageGetter imgGetter = new Html.ImageGetter() { @Override public Drawable getDrawable(String source) { Drawable drawable = null; // drawable = Drawable.createFromPath(source); // Or fetch it from the URL // Resources resources = getBaseContext().getResources(); //如果这里的图片是 互联网图片 ,需要通过代码下载到本地,然后在引用 //source 是 img标签的src属性里面的内容 drawable = getResources().getDrawable( Integer.parseInt( source)); // Important drawable.getIntrinsicWidth() 宽度和高度可以按照一定比例进行 缩放 drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable .getIntrinsicHeight()); return drawable; } }; @SuppressLint("NewApi") public void textStyle( ) { mTextView = (TextView)findViewById(R.id.htmlText3); //创建一个 SpannableString对象 msp = new SpannableString("字体测试字体大小一半两倍前景色背景色正常粗体斜体粗斜体下划线删除线x1x2电话邮件网站短信彩信地图X轴综合/bot"); //设置字体(default,default-bold,monospace,serif,sans-serif) msp.setSpan(new TypefaceSpan("monospace"), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); msp.setSpan(new TypefaceSpan("serif"), 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置字体大小(绝对值,单位:像素) msp.setSpan(new AbsoluteSizeSpan(20), 4, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //第二个参数boolean dip,如果为true,表示前面的字体大小单位为dip,否则为像素,同上。 msp.setSpan(new AbsoluteSizeSpan(20,true), 6, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置字体大小(相对值,单位:像素) 参数表示为默认字体大小的多少倍 msp.setSpan(new RelativeSizeSpan(0.5f), 8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //0.5f表示默认字体大小的一半 msp.setSpan(new RelativeSizeSpan(2.0f), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //2.0f表示默认字体大小的两倍 //设置字体前景色 msp.setSpan(new ForegroundColorSpan(Color.MAGENTA), 12, 15, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置前景色为洋红色 //设置字体背景色 msp.setSpan(new BackgroundColorSpan(Color.CYAN), 15, 18, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置背景色为青色 //设置字体样式正常,粗体,斜体,粗斜体 msp.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL), 18, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //正常 msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 20, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //粗体 msp.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 22, 24, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //斜体 msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 24, 27, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //粗斜体 //设置下划线 msp.setSpan(new UnderlineSpan(), 27, 30, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置删除线 msp.setSpan(new StrikethroughSpan(), 30, 33, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置上下标 msp.setSpan(new SubscriptSpan(), 34, 35, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //下标 msp.setSpan(new SuperscriptSpan(), 36, 37, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //上标 //超级链接(需要添加setMovementMethod方法附加响应) msp.setSpan(new URLSpan("tel:4155551212"), 37, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //电话 msp.setSpan(new URLSpan("mailto:webmaster@google.com"), 39, 41, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //邮件 msp.setSpan(new URLSpan("http://www.baidu.com"), 41, 43, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //网络 msp.setSpan(new URLSpan("sms:4155551212"), 43, 45, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //短信 使用sms:或者smsto: msp.setSpan(new URLSpan("mms:4155551212"), 45, 47, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //彩信 使用mms:或者mmsto: msp.setSpan(new URLSpan("geo:38.899533,-77.036476"), 47, 49, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //地图 //设置字体大小(相对值,单位:像素) 参数表示为默认字体宽度的多少倍 msp.setSpan(new ScaleXSpan(2.0f), 49, 51, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //2.0f表示默认字体宽度的两倍,即X轴方向放大为默认字体的两倍,而高度不变 //设置项目符号 msp.setSpan(new BulletSpan(android.text.style.BulletSpan.STANDARD_GAP_WIDTH,Color.GREEN), 0 ,msp.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //第一个参数表示项目符号占用的宽度,第二个参数为项目符号的颜色 //设置图片 Drawable drawable = getResources().getDrawable(R.drawable.fw); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); msp.setSpan(new ImageSpan(drawable), 53, 57, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mTextView.setText(msp); mTextView.setMovementMethod(LinkMovementMethod.getInstance()); } }
2 布局:
<?xml version = "1.0" encoding = "utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center" android:gravity="top" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/htmlText1" android:text="html显示" /> <TextView android:id="@+id/htmlText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="1dp" android:background="#aa0000" android:text="图片显示" /> <TextView android:id="@+id/htmlText3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="1dp"/> </LinearLayout>
3 可以给SpannableString 添加单击事件 ,
附件中是这个功能的例子
public void showMyActivityPage() { //显示MyActivity页面 String text_showMyActivity = "跳转到MyActivity页面......"; SpannableString spannnableString = new SpannableString(text_showMyActivity); //用来拆分字符串 spannnableString.setSpan(new ClickableSpan() { //设置点击时的触发范围为整个字符串 public void onClick(View widget) { Intent intent = new Intent(MainActivity.this,MyActivity.class); //从MainActivity页面跳转到MyActivity页面 startActivity(intent); } }, 0, text_showMyActivity.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); textView_showMyActivity.setText(spannnableString); textView_showMyActivity.setMovementMethod(LinkMovementMethod.getInstance()); }
相关推荐
但是在父组件中添加 scoped 之后,父组件的样式将不会渗透到子组件中,所以在父组件中书写子组件的样式是无效果的。 一、去掉 scoped 在父组件的 <style> 中去掉 scoped 后,父组件中可以书写子组件的样式,...
这里提到的“html2json”就是一种转换工具,它可以将HTML内容解析成JSON格式,便于uni-app中的组件理解和处理。 三、html2json转换 html2json是一个将HTML字符串转换为JSON对象的工具,它能够解析HTML标签并将其...
以下将详细阐述标题和描述中提到的常用HTML组件:加载指示器、按钮以及图片轮播。 1. **加载指示器**: 加载指示器是网页中常见的组件,用于向用户显示内容正在加载或处理的过程。通常,它是一个动画效果,可以是...
这个"ios应用源码之在text view上可进行html样式任意文字排列的组件"提供了一个解决方案,使得开发者能够在TextView中轻松地展示和编辑带有HTML标记的文本,实现文字的任意排列。以下是对这个组件的关键知识点的详细...
`NSAttributedString`是iOS中的一个类,可以用来表示带有属性(如字体、颜色、下划线等)的字符串,而`UIWebView`或`WKWebView`则可以解析并渲染HTML内容。通过将HTML字符串转换为NSAttributedString,然后将其加载...
在小程序开发中,富文本组件是一项重要的功能,它允许开发者将HTML内容嵌入到小程序页面中,以实现更丰富的展示效果。本项目提供了一个跨平台的小程序富文本组件,覆盖了微信、QQ、百度、支付宝、头条以及uni-app等...
尽管TextView通常不支持HTML交互,但这个组件可能通过添加手势识别器或者监听触摸事件,使得用户能与HTML内容进行交互,例如点击链接或者图片。 8. **安全考虑** 当处理用户输入的HTML内容时,必须注意防止XSS...
3. 示例界面:源码可能包含一个简单的用户界面,展示了如何在TextView中插入和显示HTML内容,以及如何通过用户交互(如点击链接)来处理HTML事件。 4. 处理事件:在自定义的TextView中,可能需要处理链接点击、图片...
综上所述,这个项目涉及的知识点包括Vue组件开发、数据绑定、计算属性、生命周期钩子、跨浏览器兼容性、CSS样式设计(尤其是使用Less)以及HTML和JavaScript的基础知识。开发者通过这些技术实现了一个既兼容老版本...
这个组件允许开发者对HTML5中的 `<audio>` 标签进行样式定制,以满足不同项目的需求,提供更加个性化和美观的音频播放体验。 在Vue.js中,组件是构建用户界面的基本单元,可以复用和组合。`vueAudio-customStyle-...
Ant Design Vue的`Description`组件支持使用插槽来自定义内容。对于`label`的样式调整,可以利用`v-slot`语法创建一个插槽,并在其中添加自定义的HTML元素来实现居中对齐。以下是具体代码示例: ```html ...
如果要动态加载的组件不在同一个模块中,还需要在`entryComponents`数组中添加该组件。 3. **动态组件工厂**: 使用`ComponentFactoryResolver`服务,我们可以获取到`DynamicComponentFactory`,它是用来创建组件...
Vue.js 是一种流行的前端框架,用于构建用户界面。在本文中,我们将探讨如何使用 Vue 来实现跑马灯样式文字的横向滚动效果。...在实际应用中,还可以根据需求添加更多功能,如控制滚动速度、方向、暂停和重新开始等。
同样地,我们为第二个组件设置相同类型的事件监听器,但交换源组件和目标组件的角色。 这个例子中的拖放功能仅限于两个特定的组件,如果需要扩展到多个组件,可以通过循环遍历所有可拖动元素并添加事件监听器来实现...
在HTML中,创建一个可多选的下拉框通常涉及到`<select>`元素与`<option>`元素的组合,但为了实现多选功能,我们需要使用`<input type="checkbox">`和自定义的JavaScript或者利用现代浏览器支持的Web组件技术。...
Flex组件边框线样式是前端开发...综上所述,Flex组件边框线样式是一个多维度的设计概念,涵盖边框、标题、内容区域以及与之相关的交互反馈和响应式设计。熟练掌握这些技巧,可以让你创建出既美观又功能强大的Flex应用。
本知识点将详细介绍Vaadin组件的CSS规则,包括如何为组件添加激活、禁用、只读状态的样式,以及如何控制组件的尺寸和设置输入焦点样式。 首先,Vaadin的UI组件CSS样式由一系列具有特定功能的类组成。例如,v-...
总的来说,创建一个uni-app的日历组件涉及到视图布局、数据处理、事件响应和样式设计等多个方面。通过以上步骤,你可以构建一个基本的日历组件,并根据项目需求进行定制,比如在这个例子中去除了农历显示。在开发...