android 中 TextView的用法

本文講解TextView4種常見的用法:

一. 如何顯示文本(URL,不同大小、字體、顏色的文本)

    

activity_main.xml

<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:id="@+id/textview1"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:padding="20sp"		
		/>	
		
	
	<TextView
		android:id="@+id/textview2"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:padding="20sp"
		android:autoLink="all"
		android:textSize="20sp"		
		/>
	
	
</LinearLayout>


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.widget.TextView;

public class MainActivity extends Activity {

    private TextView textView1,textView2;
	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView1 = (TextView)findViewById(R.id.textview1);  
        textView2 = (TextView)findViewById(R.id.textview2);
        
        
        
        //textview1
        String html = "<font color='red'>I love android</font><br>";
        html+= "<font color='#0000FF'><big><i>I love android</i></big></font><br><p>";
        html+="<big><a href='http://www.baidu.com'>百度</a></big>";
        
        CharSequence charSequence = Html.fromHtml(html);
        textView1.setText(charSequence);
        textView1.setMovementMethod(LinkMovementMethod.getInstance());//點擊時產生超鏈接。        
    
              
        //textview2
        String text = "\n我的URL :http://www.sina.com\n";
        text += "我的郵箱:[email protected]\n";
        text+="我的電話: 13956789918\n";
        textView2.setText(text);
        textView2.setMovementMethod(LinkMovementMethod.getInstance());
      
       
        
    }

	
}


二.在TextView 中顯示錶情圖像和文本

圖片目錄:


activity_main.xml

<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:id="@+id/textview"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:padding="20sp"		
		/>
</LinearLayout>


MainActivity.java

package com.android.mytextview;

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 {

	private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        textView = (TextView)findViewById(R.id.textview);
        
        //textview4
        textView.setTextColor(Color.BLACK);
        textView.setBackgroundColor(Color.WHITE);
        textView.setTextSize(20);
        String html2 = "圖像1<img src='image1' />圖像2<img src='image2' />圖像3<img src='image3' /><p>";
        html2+="圖像4<a href='http://www.baidu.com'><img src='image4' /></a>圖像5<img src='image5' />";
        
        CharSequence charSequence2= Html.fromHtml(html2,new ImageGetter() {
			
			public Drawable getDrawable(String source) {
				
				//獲得系統資源的信息,比如圖片信息
				Drawable drawable = getResources().getDrawable(getResourceId(source));
				// 第三個圖片 按50%壓縮
				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(charSequence2);
        textView.setMovementMethod(LinkMovementMethod.getInstance());     
        
        
        
        
    }

    public int getResourceId(String name){
		try {
			//根據資源ID的變量名獲取Field對象 ,使用java反射寄宿制來實現的。
			Field field = R.drawable.class.getField(name);
			// 獲取並返回資源的 id的字段(靜態變量)的值,使用反射機制。
			return Integer.parseInt((field.get(null).toString()));
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
		return 0;
	}
    

}
注意:第三章圖片 按照50%等比例壓縮,第四章圖片 超鏈接。

三.單擊鏈接彈出Activity

點擊“顯示Activity1”

點擊”顯示Activity2“

activity_main.xml

<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:id="@+id/textview1"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:textSize="20sp" />
	<TextView
		android:id="@+id/textview2"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:textSize="20sp" 
		android:layout_marginTop="20dp"  />
</LinearLayout>


MainActivity.java

package com.android.mytextview;

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.View;
import android.widget.TextView;

public class MainActivity extends Activity {

	private TextView textView1,textView2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView1 = (TextView)findViewById(R.id.textview1);
        textView2 = (TextView)findViewById(R.id.textview2);
        
        String text1 = "顯示Activity1"; 
        String text2 = "顯示Activity2";
        SpannableString s1 = new SpannableString(text1);
        SpannableString s2 = new SpannableString(text2);
        s1.setSpan(new ClickableSpan() {
			
			@Override
			public void onClick(View widget) {
				// TODO Auto-generated method stub
				Intent intent = new Intent(MainActivity.this,Activity1.class);
				startActivity(intent);				
			}
		}, 0, text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        
        s2.setSpan(new ClickableSpan() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Intent intent = new Intent(MainActivity.this,Activity2.class);
				startActivity(intent);	
			}
		}, 0, text2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        
        textView1.setText(s1);
        textView2.setText(s2);
        
        textView1.setMovementMethod(LinkMovementMethod.getInstance());
        textView2.setMovementMethod(LinkMovementMethod.getInstance());
        
    }
    
    


    
}

Activity1.java

package com.android.mytextview;

import android.app.Activity;
import android.os.Bundle;

public class Activity1 extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		setTitle("Activity1");
	}
}


Activity2.java

package com.android.mytextview;

import android.app.Activity;
import android.os.Bundle;

public class Activity2 extends Activity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		super.onCreate(savedInstanceState);
		
		setTitle("Activity2");
	}
}


四.用TextView實現 跑馬燈效果

activity_main.xml

<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:id="@+id/textview1"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:singleLine="true"
		android:ellipsize="marquee"
		android:marqueeRepeatLimit="marquee_forever"
		android:focusable="true"
		android:focusableInTouchMode="true"
		/>			
	
</LinearLayout>


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.widget.TextView;

public class MainActivity extends Activity {

    private TextView textView1;
	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView1 = (TextView)findViewById(R.id.textview1);          
        
        //textview1
        String html = "4月17日晚,<a href='http://www.weibo.com'>新浪微博</a>終於成功登陸納斯達克交易所,發行1680萬股,最終發行定價17美元,位於此前擬定發行價格區間的下限。按此價格計算,新浪微博將募集資金2.856億美元,低於預期。";        
        
        CharSequence charSequence = Html.fromHtml(html);        
        textView1.setText(charSequence);
        textView1.setMovementMethod(LinkMovementMethod.getInstance());//點擊時產生超鏈接。                    
       
      
       
        
    }

	
}

發佈了49 篇原創文章 · 獲贊 13 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章