亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android開發技巧之在a標簽或TextView控件中單擊鏈接彈出Activity(自定義動作)

2020-04-11 12:32:37
字體:
來源:轉載
供稿:網友
在5.2.1節和5.2.2節介紹了<a>標簽以及TextView自動識別的特殊文本(網址、電話號、Email等),這些都可以通過單擊來觸發不同的動作。雖然這些單擊動作已經可以滿足大多數需要了,但如果讀者想在單擊鏈接時執行任意自定義的動作,那么本節的內容非看不可。

現在讓我們使用5.2.1節介紹的方法重新查看Html.java文件的內容,隨便找一個處理Html標簽的方法,例
如,endA方法。該方法用于處理</a>標簽。我們會發現在該方法中如下的語句。

text.setSpan(newURLSpan(h.mHref),where,len,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
其中text是SpannableStringBuilder對象,該對象即可以修改文本內容,又可以將某段文本設置成一個Span,在Android中,Span表示一段文本的效果,例如,鏈接形式、圖像、帶背景色的文本等。

上面代碼中使用setSpan方法將某個區間(由where和len指定的區間)的文本設置成URLSpan效果,也就是鏈接顯示效果。其中URLSpan表示將文本設置成鏈接效果,該類是ClickableSpan的子類,在android.text.style包中可以找到URLSpan和ClickableSpan類。實際上,所有的Span類都在android.text.style包中。
我們再按著查看Html.java文件內容的方法查看URLSpan.java文件的內容,會看到一個onClick方法,代碼如下:
復制代碼 代碼如下:

//覆蓋ClickableSpan類中的onClick方法,onClick方法在ClickableSpan類中是抽象方法
@Override
publicvoidonClick(Viewwidget){
Uriuri=Uri.parse(getURL());
Contextcontext=widget.getContext();
Intentintent=newIntent(Intent.ACTION_VIEW,uri);
intent.putExtra(Browser.EXTRA_APPLICATION_ID,context.getPackageName());
context.startActivity(intent);
}

在onClick方法中獲得了<a>標簽的href屬性設置的URL,并調用相應的Activity來顯示網頁。

從onClick方法的源代碼以及ClickableSpan類的名字可以得出一個結論。在5.2.1節和5.2.2節介紹的像電話、Email、網址、鏈接都是在ClickableSpan類的onClick方法中通過Action調用相應的Activity來顯示不同的內容的。那么我們也可以采用類似的方法,也就是自己來實現onClick方法,這樣就可以達到自定義單擊動作的目的了。

說做就做,先準備兩個TextView控件。在本例中我們使用SpannableString對象來設置Span,SpannableString和SpannableStringBuilder的區別是SpannableString不允許修改文本,只允許設置Span,而SpannableStringBuilder即允許修改文本,也允許設置Span。

下面的代碼采用了隱式創建ClickableSpan對象實例的方法來設置Span,并在其中覆蓋了onClick方法。
復制代碼 代碼如下:

packagemobile.android.ch05.link.activity;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.text.SpannableString;
importandroid.text.Spanned;
importandroid.text.method.LinkMovementMethod;
importandroid.text.style.ClickableSpan;
importandroid.view.View;
importandroid.widget.TextView;
publicclassMainextendsActivity
{
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextViewtextView1=(TextView)findViewById(R.id.textview1);
TextViewtextView2=(TextView)findViewById(R.id.textview2);
Stringtext1="顯示Activity1";
Stringtext2="顯示Activity2";
//將文本轉換成SpannableString對象
SpannableStringspannableString1=newSpannableString(text1);
SpannableStringspannableString2=newSpannableString(text2);
//將text1中的所有文本設置成ClickableSpan對象,并實現了onClick方法
spannableString1.setSpan(newClickableSpan()
{
//在onClick方法中可以編寫單擊鏈接時要執行的動作
@Override
publicvoidonClick(Viewwidget)
{
Intentintent=newIntent(Main.this,Activity1.class);
//顯示Activity1
startActivity(intent);
}
},0,text1.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//將text2中的所有文本設置成ClickableSpan對象,并實現了onClick方法
spannableString2.setSpan(newClickableSpan()
{
//在onClick方法中可以編寫單擊鏈接時要執行的動作
@Override
publicvoidonClick(Viewwidget)
{
Intentintent=newIntent(Main.this,Activity2.class);
//顯示Activity2
startActivity(intent);
}
},0,text1.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//使用SpannableString對象設置兩個TextView控件的內容
textView1.setText(spannableString1);
textView2.setText(spannableString2);
//在單擊鏈接時凡是有要執行的動作,都必須設置MovementMethod對象
textView1.setMovementMethod(LinkMovementMethod.getInstance());
textView2.setMovementMethod(LinkMovementMethod.getInstance());
}
}

現在我們來看一下setSpan方法,該方法有4個參數。第一個參數需要設置一個ClicableSpan對象,第二個和第三個參數分別表示文本中要設置成Span的某段文本的起始位置和終止位置的下一個字符的位置,也就是start和end。最后一個參數是一個標志。在本例中設為Spanned.SPAN_EXCLUSIVE_EXCLUSIVE,該標志在TextView控件中意義不大,但在EditText控件中表示在當前Span效果的前后輸入字符時并不應用Span的效果。還可以設置如下幾個類似的值。
1.Spanned.SPAN_EXCLUSIVE_INCLUSIVE:在Span前面輸入的字符不應用Span的效果,在后面輸入的字符應用Span效果。
2.Spanned.SPAN_INCLUSIVE_EXCLUSIVE:在Span前面輸入的字符應用Span的效果,在后面輸入的字符不應用Span效果。
3.Spanned.SPAN_INCLUSIVE_INCLUSIVE:在Span前后輸入的字符都應用Span的效果。
本例的顯示效果如圖5.5所示。單擊屏幕上的兩個鏈接后,就會分別顯示Activity1和Activity2的界面。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
北条麻妃一区二区三区中文字幕| 国内精品一区二区三区| 日韩av一区二区在线观看| 欧美激情一区二区三区成人| 欧美在线免费看| 久久久久北条麻妃免费看| 欧美麻豆久久久久久中文| 亚洲最大福利视频网站| 91精品国产沙发| 欧美超级免费视 在线| 国产视频久久久久| 亚洲91精品在线观看| 日韩美女写真福利在线观看| 久久久久久久久爱| 伊人av综合网| 欧美大全免费观看电视剧大泉洋| 狠狠躁夜夜躁久久躁别揉| 午夜免费在线观看精品视频| 亚洲a区在线视频| 性欧美办公室18xxxxhd| 国产91免费观看| 亚洲人成免费电影| 亚洲国产精品yw在线观看| 97久久精品国产| 57pao成人国产永久免费| 日本精品在线视频| 国产精品成av人在线视午夜片| 精品动漫一区二区| 国产精品视频在线播放| 在线亚洲午夜片av大片| 精品av在线播放| 亚洲xxxx妇黄裸体| 国产精品h片在线播放| 国产精品1234| 欧亚精品在线观看| 欧美亚洲国产日韩2020| 国产精品久久久久久久久久久久久久| 久久久久久久网站| 九九热这里只有精品6| 精品视频久久久久久久| 亚洲精品一区中文| 精品成人久久av| 欧美黑人巨大精品一区二区| 日本中文字幕不卡免费| 中文字幕亚洲在线| 日韩欧美中文第一页| 国产日韩欧美夫妻视频在线观看| 91久久在线观看| 国产精品久久久久国产a级| 91中文字幕在线| 国产欧美精品一区二区三区介绍| 国产精品久久久久久久久借妻| 欧美性猛交xxxx免费看久久久| 最近更新的2019中文字幕| 久久亚洲一区二区三区四区五区高| 色偷偷9999www| 68精品久久久久久欧美| 亚洲精品v天堂中文字幕| 国产精品自拍视频| 国产91精品在线播放| 伦伦影院午夜日韩欧美限制| 欧美日韩亚洲激情| 亚洲乱码国产乱码精品精| 日韩免费在线视频| 亚洲免费成人av电影| 在线丨暗呦小u女国产精品| 欧美丝袜一区二区| 色樱桃影院亚洲精品影院| 97视频免费看| 九九热在线精品视频| 日韩欧美有码在线| 亚洲老板91色精品久久| 亚洲xxxx妇黄裸体| 在线视频国产日韩| 国产欧美一区二区三区久久| 欧美精品18videos性欧美| 青草青草久热精品视频在线网站| 国内精品一区二区三区| 北条麻妃在线一区二区| 国产成人avxxxxx在线看| 欧美在线不卡区| 久久偷看各类女兵18女厕嘘嘘| 欧美午夜女人视频在线| 亚洲夜晚福利在线观看| 亚洲韩国青草视频| 青青草原一区二区| 欧美激情影音先锋| 久久久久久欧美| 日韩福利伦理影院免费| 国产成人精品免费视频| 色妞欧美日韩在线| 日韩高清电影免费观看完整| 欧美视频在线看| 亚洲国产精品成人av| 成人精品网站在线观看| 2019最新中文字幕| 国内精品视频一区| 欧美国产亚洲视频| 欧美激情欧美狂野欧美精品| 国产+成+人+亚洲欧洲| 精品国产福利在线| 欧美精品在线播放| 成人性教育视频在线观看| 久久久久久久激情视频| 久久影院免费观看| 欧美国产视频一区二区| 亚洲欧美福利视频| 亚洲日本中文字幕免费在线不卡| 91探花福利精品国产自产在线| 日本高清视频精品| 久久99精品久久久久久琪琪| 中文字幕av一区二区三区谷原希美| 性欧美办公室18xxxxhd| 国产精品一区二区在线| 午夜精品99久久免费| 91亚洲人电影| 欧美第一淫aaasss性| 国产一区二中文字幕在线看| 伊人久久大香线蕉av一区二区| 欧美国产日韩一区二区| 国产精品综合网站| 一区二区亚洲欧洲国产日韩| 久久久人成影片一区二区三区观看| 91久久精品在线| 91国内揄拍国内精品对白| 2019日本中文字幕| 4438全国亚洲精品在线观看视频| 久久久久久久久中文字幕| 日韩经典中文字幕在线观看| 亚洲视频一区二区| 欧美另类极品videosbest最新版本| 亚洲tv在线观看| 欧美日韩在线视频一区| 68精品国产免费久久久久久婷婷| 亚洲男人的天堂在线播放| 欧美成人在线网站| 亚洲2020天天堂在线观看| 精品无人国产偷自产在线| 91夜夜揉人人捏人人添红杏| 国产精品成人va在线观看| 久久免费精品日本久久中文字幕| 欧美福利视频网站| 亚洲精品一区二三区不卡| 在线观看久久av| 色婷婷久久一区二区| 九九综合九九综合| 国产精品18久久久久久首页狼| 91中文字幕在线| 国产精品久久久久久网站| 欧美性猛交xxxx久久久| 欧美福利视频在线| 亚洲国产精品嫩草影院久久| 久久69精品久久久久久国产越南| 国产精品最新在线观看| www高清在线视频日韩欧美| 日韩在线观看免费全| 午夜精品一区二区三区在线| 日韩av在线网站| 日韩专区在线播放| 国产精品久久久久久久久久久新郎| 91精品在线影院| 国产精品h片在线播放| 成人做爰www免费看视频网站| 国产日韩专区在线|