`
java-mans
  • 浏览: 11379670 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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() {
			@Override
			public void onClick(View v) {
				Intent intent=new Intent();
				intent.setClass(TextViewLianxiActivity.this, AddressTextView.class);
				startActivity(intent);
			}
		});
        /**文本内容处理**/
		button2.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent=new Intent();
				intent.setClass(TextViewLianxiActivity.this, FontTextView.class);
				startActivity(intent);
			}
		});
		/**显示图片和背景图片**/
		button3.setOnClickListener(new OnClickListener() {
			@Override
			public 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 {
	@Override
	protected 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. textview中样式是跑马灯效果。
  3. 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






分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics