Android之UI组件TextView的属性大集合

来源:互联网 发布:.手机域名在哪注册 编辑:程序博客网 时间:2024/05/16 10:04

Android之UI组件TextView的属性大集合

下载原码地址:http://download.csdn.net/detail/rhljiayou/3917103

1、先展示项目结构图:


主界面:


链接手机/网页/邮件/地址的界面效果:


文本显示内容处理界面:



TextView显示图片的界面:


2、主界面很简单就三个按钮事件

package cn.csdn.activity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class TextViewLianxiActivity extends Activity {Button button1=null;Button button2=null;Button button3=null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        findViews();        /**手机/网页/邮件/地址/全部**/        button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent();intent.setClass(TextViewLianxiActivity.this, AddressTextView.class);startActivity(intent);}});        /**文本内容处理**/button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent();intent.setClass(TextViewLianxiActivity.this, FontTextView.class);startActivity(intent);}});/**显示图片和背景图片**/button3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent();intent.setClass(TextViewLianxiActivity.this, ImageTextView.class);startActivity(intent);}});    }private void findViews() {button1=(Button) findViewById(R.id.button1);button2=(Button) findViewById(R.id.button2);button3=(Button) findViewById(R.id.button3);}}
main.xml文件很简单:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/test" />    <Button        android:id="@+id/button1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="链接手机/网页/邮件/地址" />    <Button        android:id="@+id/button2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="文本显示内容处理" />    <Button        android:id="@+id/button3"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="TextView中显示图片" /></LinearLayout>


链接手机/网页/邮件/地址的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" >    <!-- 网页 -->    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:autoLink="web"        android:text="@string/webUrl" />   <!-- 邮箱 -->    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:autoLink="email"        android:text="@string/email" />    <!-- 手机号码 -->    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:autoLink="phone"        android:text="@string/phoneNumber" />    <!-- 以上全部 -->    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:autoLink="all"        android:background="#00ff00"        android:text="@string/autoAll" />    <!-- 地图地址 -->    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:autoLink="map"        android:text="@string/mapUrl" />    <!-- 用html显示超连接 -->    <TextView        android:id="@+id/tvHtml"        android:layout_width="fill_parent"        android:layout_height="wrap_content" /></LinearLayout>

AddressTextView代码:

package cn.csdn.activity;import android.app.Activity;import android.os.Bundle;import android.text.Html;import android.widget.TextView;public class AddressTextView extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.setContentView(R.layout.address);TextView view=(TextView) findViewById(R.id.tvHtml);String string="<a href='#'>这是用html超链接实现的</a>";view.setText(Html.fromHtml(string));}}


注意:

android:autoLink=”email” :会出现unsupported action,可能是模拟器bug,须探究

另外使用Html.fromHtml时,超链接只具备外观,不能跳转


谷歌地图:

设置 android:autoLink="map"后需要有google地图才可以 否则会报错


文本显示内容处理界面xml的代码:

可以在textView中设置我们想要的任何效果

<?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" >    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="正常的文本内容" />    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:textStyle="italic"        android:textColor="#ff0000"        android:text="倾斜的带颜色的字体" />    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:background="#00ff00"        android:textStyle="bold"        android:textSize="30dp"        android:text="加粗,背景颜色,字体30dp" /><TextView      android:layout_width="fill_parent"        android:layout_height="wrap_content"    android:text="使文字显示*的字体"/>    <TextView                android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:background="#ffffff"        android:text="使文字显示*的字体"         android:password="true"/>    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"         android:textSize="20dp"             android:text="只显示一行字符串超出屏幕为'...'dsfusdiofjdsiofjsdiofjoisdjfiosdjfoisdjfoisdf"        android:singleLine="true" />    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:textSize="20dp"        android:text="字符串超出屏幕为 换行显示这些 字符串 d"         />    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:textScaleX="0.5"        android:textColor="#ff0000"        android:text="红色字体设置显示文字的间隔为0.5" /><TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:textScaleX="2.0"        android:textColor="#ff0000"        android:text="红色字体设置显示文字的间隔为2.0" />    <TextView        android:layout_width="200px"        android:layout_height="wrap_content"        android:textSize="20dp"        android:ellipsize="marquee"               android:marqueeRepeatLimit="marquee_forever"          android:focusable="true"         android:focusableInTouchMode="true"        android:scrollHorizontally="true"        android:text="文字滚屏文字跑马灯效果文字滚屏文字跑马灯效果" />    <cn.csdn.activity.BorderTextView    android:layout_width="wrap_content"        android:layout_height="wrap_content"         android:gravity="center"         android:padding="10dp"        android:text="带边框的文字"/></LinearLayout>

解释一下跑马灯效果的一些属性: 

  1.   android:ellipsize="marquee" 
  2.  
  3. textview中样式是跑马灯效果。 
  4.  
  5. android:marqueeRepeatLimit="marquee_forever"  

循环次数,这里是无限循环,可以根据需要写具体的次数,例如5。

  1. android:singleLine="true"  

textview中字体单行显示,否则会换行,不会出现跑马灯效果。

  1. android:focusable="true" 
  2. android:focusableInTouchMode="true" 

使textview获取焦点,这样字体就会自动滚动。

上面带边框的BorderTextView是自己定义好的代码如下:

package cn.csdn.activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.util.AttributeSet;import android.widget.TextView;public class BorderTextView extends TextView {public BorderTextView(Context context, AttributeSet attrs) {super(context, attrs);}public void onDraw(Canvas canvas) {super.onDraw(canvas);Paint paint = new Paint();paint.setColor(android.graphics.Color.GREEN);canvas.drawLine(0, 0, this.getWidth() - 1, 0, paint);canvas.drawLine(0, 0, 0, this.getHeight() - 1, paint);canvas.drawLine(this.getWidth() - 1, 0, this.getWidth() - 1,this.getHeight() - 1, paint);canvas.drawLine(0, this.getHeight() - 1, this.getWidth() - 1,this.getHeight() - 1, paint);}}

写好这段代码只要在xml文件用就行了;


TextView显示图片:


通过设置背景的方式显示
 android:background="@drawable/icon"

 
设置图片在textView的锚点位置
android:drawableBottom="@drawable/icon"
android:drawableTop="@drawable/icon"
android:drawableLeft="@drawable/icon"
android:drawableRight="@drawable/icon"

<?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:background="@drawable/icon"    android:orientation="vertical" >    <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:drawableTop="@drawable/icon"        android:textColor="#ff0000"        android:textSize="20dp"        android:text="图像在文字上方"/><TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:drawableBottom="@drawable/icon"         android:textColor="#ff0000"        android:textSize="20dp"        android:text="图像在文字下方"/><TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:drawableLeft="@drawable/icon"         android:textColor="#ff0000"        android:textSize="20dp"        android:text="图像在文字左方"/><TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:drawableRight="@drawable/icon"        android:textColor="#ff0000"        android:textSize="20dp"        android:text="图像在文字右方"/><TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@drawable/icon"        android:textColor="#ff0000"        android:textSize="20dp"        android:gravity="center"        android:text="文字在图片上中间"/></LinearLayout>
ok!!代码到此为止,好多属性需要自己查文档来自己学习,这只是一部分属性!!

大家可以下载源代码来研究一下!!

http://download.csdn.net/detail/rhljiayou/3917103






原创粉丝点击