UI控件----TextView 实例总结
来源:互联网 发布:淘宝手办怎么验货拒签 编辑:程序博客网 时间:2024/05/20 10:20
TextView主要是在android界面中实现文字说明等功能。主要实现功能如下:1,显示丰富的文本(URL、字体大小、颜色等)
在TextView中预定了一些类似HTML的标签,通过标签可以使TextView控件显示不同颜色、大小、字体的文字。
<font>:设置颜色和字体
<big>:设置大小号
<small>:设置小号
<i>\<b>:斜体、粗体
<a>:链接地址
<img>:插入图片
使用这些标签可以用Html.fromHtml方法将这些标签的字符串转换成Charsequenece对象,然后在TextView中进行设置。
如果想在显示的文本中将URL地址、邮箱地址、电话产生超链接的效果可以使用android:autoLink来设置。
该属性如下:
显示丰富文本
最终显示效果如下,显示的超链接可以链接到网络中:
完成步骤1,在values文件夹的string.xml中完成代码:
<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">显示html元素控件</string> <string name="action_settings">Settings</string> <color name="green">#00ff00</color> <string name= "link_text"><a href="tel:8888888">打电话</a></string></resources>
设置颜色为green,设置超链接的一个标签href,完成电话功能
完成步骤2,在layout文件夹中的activity_main.xml中完成代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textview1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="20sp" > </TextView> <TextView android:id="@+id/textview2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:autoLink="all" android:padding="20sp" android:textSize="20sp" android:text="@string/link_text"> </TextView></RelativeLayout>
padding 设置边距
设置文本autoLink为all,匹配所有链接
完成步骤3,在MainActivity.java中完成代码:
package com.example.android_textview;import android.os.Bundle;import android.app.Activity;import android.text.Html;import android.text.method.LinkMovementMethod;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity {private TextView textView1, textView2;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView1 = (TextView) this.findViewById(R.id.textview1);textView2 = (TextView) this.findViewById(R.id.textview2);String html = "<font color = 'red'>enjoy android</font><br>";html += "<font color='#0000ff'><big><i>enjoy android</i></big></font><p>";html += "<big><a href='http://www.baidu.com'>百度</a></big>";CharSequence charSequence = Html.fromHtml(html);textView1.setText(charSequence);textView1.setMovementMethod(LinkMovementMethod.getInstance());String text = "\n\n\n我的URL : http://www.sina.com\n";text += "\n\n\n我的eamil: wdzgoo@gmail.com\n";text += "\n\n\n\n我的电话: + 86 0660-8887115";textView2.setText(text);textView2.setMovementMethod(LinkMovementMethod.getInstance());}}
添加html标志:
设置文字“enjoy“为red,第二个enjoy设置为0000ff颜色,大号字体,斜体,段落符
设置百度的超链接html += "<big><a href='http://www.baidu.com'>百度</a></big>";这条语句无法实现超链接,不解中。。
textView2.setMovementMethod(LinkMovementMethod.getInstance());实现超链接。
显示表情图像和文字
实现效果如下:
完成步骤一:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:background="#fff" /></RelativeLayout>
完成步骤二:
选择5张图像放在androidbook\android_textview_qq\res\drawable-hdpi文件夹中,在activity_mail.xml中完成代码:
package com.example.android_textview_qq;import java.lang.reflect.Field;import android.os.Bundle;import android.app.Activity;import android.graphics.Color;import android.graphics.drawable.Drawable;import android.text.Html;import android.text.Html.ImageGetter;import android.text.method.LinkMovementMethod;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity {public int getResourceId(String name){try{Field field = R.drawable.class.getField(name);return Integer.parseInt(field.get(null).toString());}catch (Exception e){}return 0;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView textView = (TextView) this.findViewById(R.id.textview);textView.setTextColor(Color.BLACK);textView.setBackgroundColor(Color.WHITE);textView.setTextSize(20);String html = "图像1<img src='image1'/>图像2<img src='image2'/>图像3<img src='image3'/>";html+="图像4<a href='http://www.baidu.com'><img src='image4'/>图像5<img src='image5'/>";CharSequence charSequence = Html.fromHtml(html, new ImageGetter(){public Drawable getDrawable (String source){Drawable drawable = getResources().getDrawable(getResourceId(source));if(source.equals("image3")){drawable.setBounds(0,0,drawable.getIntrinsicWidth()/2,drawable.getIntrinsicHeight()/2);}else{drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());}return drawable;}},null);textView.setText(charSequence);textView.setMovementMethod(LinkMovementMethod.getInstance());}}
getResources()获得系统资源的信息,比如图片信息,返回给drawable对象。if语句实现的是将第三个图片文件按照50%的比例进行压缩:实际宽度高度除以2。对第五张图片实现点击超链接到百度网址,不过百度网址链接不出来,有待研究。。
单击链接弹出activity
实现效果如下,点击两个activity时分别显示其activity:
完成步骤一,在activity_main.xml中完成代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" /> <TextView android:id="@+id/textview2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_marginTop="20dp" /></RelativeLayout>
完成步骤二:MainActivity.java中完成代码:
package com.example.android_textview_activity;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.text.SpannableString;import android.text.Spanned;import android.text.method.LinkMovementMethod;import android.text.style.ClickableSpan;import android.view.Menu;import android.view.View;import android.widget.TextView;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView textView = (TextView) this.findViewById(R.id.textview);TextView textView2 = (TextView) this.findViewById(R.id.textview2);String text1 = "显示Activity1";String text2 = "显示Activity2";SpannableString spannableString = new SpannableString(text1);SpannableString spannableString2 = new SpannableString(text2);spannableString.setSpan(new ClickableSpan(){public void onClick(View widget) {// TODO Auto-generated method stubIntent intent = new Intent(MainActivity.this,Activity1.class);startActivity(intent);}}, 0, text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);spannableString2.setSpan(new ClickableSpan(){public void onClick(View widget){Intent intent = new Intent(MainActivity.this,Activity2.class);startActivity(intent);}}, 0, text2.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);textView.setText(spannableString);textView2.setText(spannableString2);textView.setMovementMethod(LinkMovementMethod.getInstance());textView2.setMovementMethod(LinkMovementMethod.getInstance());}}
完成步骤三:新建两个activity文件,完成代码:
package com.example.android_textview_activity;import android.app.Activity;import android.os.Bundle;public class Activity1 extends Activity {public Activity1() {// TODO Auto-generated constructor stub}protected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setTitle("Activity1");}}
package com.example.android_textview_activity;import android.app.Activity;import android.os.Bundle;public class Activity2 extends Activity {public Activity2() {// TODO Auto-generated constructor stub}protected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setTitle("Activity2");}}
实现跑马灯效果
第一步:在layout文件夹中activity_main.xml文件中完成代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:focusable="true" android:background="#ffffff" android:textColor="#000" android:textSize="20dp" android:focusableInTouchMode="true" android:layout_margin="10dp" android:padding="10dp" /></RelativeLayout>
第二步,在src的MainActivity.java文件中完成代码:
package com.example.textview_show;import android.os.Bundle;import android.app.Activity;import android.text.Html;import android.text.method.LinkMovementMethod;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity {private TextView textView1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView1 = (TextView) this.findViewById(R.id.textview);String html = "警惕!XP停服第一周 ,<a href='http://www.baidu.com'>“XP猎手”</a>木马假冒补丁来袭";CharSequence charSequence = Html.fromHtml(html);textView1.setText(charSequence);textView1.setMovementMethod(LinkMovementMethod.getInstance());}}
代码分析:
android:singleLine="true"
控制显示行为单行,不显示单行则无法实现动态效果:
android:ellipsize="marquee"
跑马灯显示
android:marqueeRepeatLimit="marquee_forever"
循环显示跑马灯效果
android:focusable="true"
获取焦点功能。只有当TextView获取到焦点时,才能出现跑马灯效果
java文件:
textView1 = (TextView) this.findViewById(R.id.textview)
寻找xml文件中定义的id对象
CharSequence charSequence = Html.fromHtml(html);
使用CharSequence接口,表示字符的有序集合,并定义一些方法来测试。
textView1.setMovementMethod(LinkMovementMethod.getInstance());
设置移动方法(如方向键处理器)来为TextView服务,这个方法为空时,表示不允许用箭头键来移动光标或者滚动视图。
0 0
- UI控件----TextView 实例总结
- UI控件----EditText 实例总结
- UI控件----BUTTON 实例总结
- UI控件--TextView
- UI控件之TextView
- UI控件----ProgressBar进度条 实例总结
- Android UI 控件之TextView
- Android UI控件之TextView
- TextView 控件的总结
- C#子线程更新UI控件的方法实例总结
- Android UI 之TextView控件属性列表
- Android UI 控件详解-TextView(文本视图)
- Android UI设计——TextView控件
- Android UI 设计——TextView 控件
- Android UI基础——TextView控件
- Android UI开发中的常用控件TextView
- UI基础控件总结
- Android UI控件总结
- 学习Scala:孤立对象的实现原理
- 常用的android对话框
- Ubuntu 12.04 下Webmin的安装步骤
- UCGUI的移植
- Android中怎么去掉imgview 中上下的空白?
- UI控件----TextView 实例总结
- C语言库函数中的排序和查找函数
- C内存对齐规则
- 黑盒测试之等价类划分法
- Error in invoking target 'install' of makefile
- 数据库–MySQL主从同步备份设置
- Matlab中size函数用法
- EM重建
- linux下录音并使用google API变文本