當前位置:首頁 » 安卓系統 » imagespanandroid

imagespanandroid

發布時間: 2023-03-21 10:08:43

① 如何刪除EditBox中的ImageSpan-Android開發問答

我這基橋型樣搏猜可以刪除。
final KeyEvent keyEventDown = new KeyEvent(KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_DEL);

btnDel.setOnClickListener(new OnClickListener() {

@Override
public void
onClick(View v) {
/消畢/ TODO Auto-generated
method stub

editText.onKeyDown(KeyEvent.KEYCODE_DEL, keyEventDown);

}
});

② Android ImageSpan 給文字設置圓角背景 並且文字居中,背景居中。

特此感謝  http://blog.csdn.net/instriously/article/details/53493392

特此感謝 https://github.com/pengyuntao/RadiusBackgroundSpan

全中文的:

中文加英文余譽拆豎棗虛握的

③ android編程如何顯示大量文本

如果是產品製作方向——

由於手機屏幕的限制,和屏幕大小的問題
顯示大量文字,在產品方面,我們一般放棄使用縮小字體類似的方法
一般的做法都是讓文本可以上下滑動來進行閱讀

如果按照上下滑動思路就很簡單了
使用ScrollView,內部嵌套一個TextView就可以了

可以來個簡單範例
============================
<ScrollView

android:id="@+id/scrollView1"

android:layout_width="match_parent"

android:layout_height="match_parent" >

<LinearLayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="要顯示的大段文字" />

</LinearLayout>

</ScrollView>
==========================

如果是說編程界面——
如果開發使用ADT可以
在首選項中選擇常規——編輯器——文本編輯器,這里可以任意修改文字大小、顏色等

④ android 怎麼實現圖文混排 如圖所示的效果

或者把圖片放在層里也好任意移動圖片的位置,只是可能有些IE對圖層內容不能正常顯示。 你給圖片設個浮動,就可以圖文混排,用css樣式定義或用對齊方式

⑤ Android SpannableString用法

什麼是SpannableString?
SpannableString,是CharSequence的一種,原本的CharSequence只是一串字元序列,沒有任何樣式,而SpannableString可以在字元序列基礎上對指定的字元進行潤飾,在開發中,TextView可以通過setText(CharSequence)傳入SpannableString作為參數,來達到顯示不同樣式文字的效果。

創建方式

一般通過以下方式進行設置

這里講解一大或下幾個參數的意義

這里涉及到一個重要的角色,就是各種各樣的span,它決定我們要對文字的進行怎樣的潤飾,而後三個參數決定潤飾哪些文字,為了方便起見,後面的flags默認都使用SPAN_INCLUSIVE_EXCLUSIVE模式。

ForegroundColorSpan:前景色,也就是對文字上色,顏色設置為GREEN,start為4,end為7,應該是「陳奕迅」三個字顯示為綠色,看一下實際效果

BackgroudColorSpan:與ForegroundColorSpan類似,對文字背景上色

ClickableSpan:是一個抽象類,實現可點擊效果,可以重寫onClick方法實現點擊事件,這里點擊「陳奕迅」三個字簡單地彈toast

URLSpan:實現超鏈接的效果,繼承於ClickableSpan,點擊實現跳轉到瀏覽器

MaskFilterSpan:構造方法接受MaskFilter作為參數,其中它有兩個子類:EmbossMaskFilter和BlurMaskFilter
EmbossMaskFilter實現浮雕效果

BlurMaskFilter實現模糊效果

RelativeSizeSpan:設置氏罩字體的相對大小,這里設置為TextView大小的1.5倍,看圖

AbsoluteSizeSpan:設置字體的相絕對大小,40表示文字大小,true表示單位為dip,若為false則表示px

ScaleXSpan:設置字體x軸縮放,1.5表示x軸放大為1.5倍,效果如圖

StyleSpan:設置文字樣式,如斜體、粗體

TypefaceSpan:設置文字字體類型,如monospace、serif和殲仿鬧sans-serif等等

TextAppearanceSpan:設置文字外貌,通過style資源設置,這里使用系統的style資源

UnderlineSpan:設置文字下劃線,強調突出文字時可以使用該span

StrikethroughSpan:設置文字刪除線

SuperscriptSpan:設置文字為上標

SubscriptSpan:設置文字為下標
[圖片上傳中...(-5258c2-1637738519376-0)]

ImageSpan:設置圖片

⑥ Android用ImageSpan顯示的圖片怎麼調整大小

ImageSpan是通過bitmap生成的,如果要調整圖片的大小,你可以對bitmap進行預處理,比如scale之類的操作,生成你目標的bitmap再生成ImageSpan。

還有就是,可以把圖片設置到ImageView里,調整好ImageView里圖片的大小,再把ImageView生成對應的bitmap,從而生成ImageSpan。

xml視圖生成bitmap參照:

⑦ IM項目中的自定義小表情實現

在im項目(Android)中,用戶發消息,喜歡在文字中嵌入一些小表情,以表達發送者當時的情感。除了系統輸入法自帶的emoji表咐塵情(emoji其實是特殊的文字)外。項目希望帶一些更漂亮,帶產品特色文化的自定義小表情(小圖片)。

圖片嵌入在文字中顯示,很明顯可以使用ImageSpan去弊含實現該效果。

效果如圖:

實現上,主要問題是,實現文字與表情的轉換。因此需要定義一套對應關系。

這里採用類似微信的實現,[key]對應表情。比如: [微笑] 對應 😊。

工具類:

主要就是做一個轉換功能。同時需要考慮一下性能優化,否則效率低就會卡頓。

PS:這里優化了 查詢轉換策略 和 Drawable復用策略,供參考。

:Spannable有關的操作,少用String。使用CharSequence,因為不一定是String。用 SpannableString.valueOf(text) 代替 new SpannableString(text)

在TextView上使用,也寫個BindingAdapter方法。

註:其中 TextUtils.ellipsize(emo, paint, avail, TextUtils.TruncateAt.END) 是為了解決表情在單行textView顯示不下時顯「...」.的問題。直接默認用TextView的 ellipsize 屬性,對表情(ImageSpan)無效,租簡笑會截成半個。

表情要在輸入框中顯示。根據輸入code,自動轉換成表情(ImageSpan)。

方案1:給EditView設置監聽,在文字變化後將文字做個轉換。這樣效率超低,輸入越多越卡。否決!

方案2:根據具體變化的文本設置轉換。

:當前輸入的東西(可能是復制過來的多個字元)。可能會影響到前面或後面的幾個字元。

表情選擇框操作

刪除:模擬退格,表情需要整個整個刪。

插入:將code插入到游標末尾。

轉發到微信,有些表情微信里沒有對應。轉換成emoji代替。

要點:

⑧ android SpannableString圖片顯示不全

很簡單,給EditText設置padding,或者上面遮住了就設置paddingTop,以此類推。

⑨ android的TextView怎麼做高亮閃爍效果

要給TextView加上效果,方式主要有幾種:第一種,自動應用效果,使用android:autolink屬性,如:java代碼android:id="@+id/text1"android:layout_width="match_parent"android:layout_height="match_parent"android:autoLink="all"android:text="@string/link_text_auto"/>第二種,在文本中使用標簽,如:Java代碼text2:Thisissomeothertext,withalinkspecifiedviaantag.Usea\"tel:\"URLtodialaphonenumber第三種,和第二種其實是一樣的,只不過將文本改在JAVA代碼中,如:Java代碼TextViewt3=(TextView)findViewById(R.id.text3);t3.setText(Html.fromHtml("text3:Textwitha"+"link"+"."));t3.setMovementMethod(LinkMovementMethod.getInstance());第四種,前面三種可以說都是自動的,而第四種就是純「手工」的了。通過創建SpanableString字元串,並在之上創建一個或多個Span來實現豐富的效果。例子如下:Java代碼SpannableStringss=newSpannableString("text4:Clickheretodialthephone.");ss.setSpan(newStyleSpan(Typeface.BOLD),0,6,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);ss.setSpan(newURLSpan("tel:4155551212"),13,17,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);TextViewt4=(TextView)findViewById(R.id.text4);t4.setText(ss);t4.setMovementMethod(LinkMovementMethod.getInstance());完整的代碼見ApiDemo吧,下面我提幾點需要注意的:.setMovementMethod,此方法在需要響應用戶事件時使用,如點擊一個電話號碼就跳轉到撥號頁面。如果不執行這個方法是不會響應事件的,即便文本看著已經是下劃線藍色字了。.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE,這是在setSpan時需要指定的flag,它的意義我試了很久也沒試出來,睡個覺,今天早上才突然有點想法,試之,果然。它是用來標識在Span范圍內的文本前後輸入新的字元時是否把它們也應用這個效果。分別有Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前後都不包括)、Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前麵包括,後面不包括)、Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,後麵包括)、Spanned.SPAN_INCLUSIVE_INCLUSIVE(前後都包括)在Android中,TextView是我們最常用的用來顯示文本的控制項。一般情況下,TextView中的文本都是一個樣式。那麼如何對於TextView中各個部分的文本來設置字體,大小,顏色,樣式,以及超級鏈接等屬性呢?下面我們通過SpannableString的具體實例操作來演示一下。res-layout-main.xml:Java代碼android:layout_height="wrap_content"android:layout_width="wrap_content"android:orientation="horizontal">android:id="@+id/myTextView"android:layout_width="fill_parent"android:layout_height="wrap_content"/>res-color-color.xmlres-color-linkcolor.xml:Java代碼android:color="#ffffff00"/>android:color="#ff00ffff"/>TextViewLinkActivity:Java代碼importjava.io.IOException;importorg.xmlpull.v1.XmlPullParserException;importandroid.app.Activity;importandroid.content.res.ColorStateList;importandroid.content.res.XmlResourceParser;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Color;importandroid.graphics.drawable.Drawable;importandroid.os.Bundle;importandroid.text.SpannableString;importandroid.text.Spanned;importandroid.text.method.LinkMovementMethod;importandroid.text.style.AbsoluteSizeSpan;importandroid.text.style.BackgroundColorSpan;importandroid.text.style.BulletSpan;importandroid.text.style.DrawableMarginSpan;importandroid.text.style.ForegroundColorSpan;importandroid.text.style.IconMarginSpan;importandroid.text.style.ImageSpan;importandroid.text.style.RelativeSizeSpan;importandroid.text.style.ScaleXSpan;importandroid.text.style.StrikethroughSpan;importandroid.text.style.StyleSpan;importandroid.text.style.SubscriptSpan;importandroid.text.style.SuperscriptSpan;importandroid.text.style.TextAppearanceSpan;importandroid.text.style.TypefaceSpan;importandroid.text.style.URLSpan;importandroid.text.style.UnderlineSpan;importandroid.widget.TextView;{TextViewmTextView=null;SpannableStringmsp=null;/**.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);mTextView=(TextView)findViewById(R.id.myTextView);//創建一個SpannableString對象msp=newSpannableString("字體測試字體大小一半兩倍前景色背景色正常粗體斜體粗斜體下劃線刪除線x1x2電話郵件網站簡訊彩信地圖X軸綜合/bot");//設置字體(default,default-bold,monospace,serif,sans-serif)msp.setSpan(newTypefaceSpan("monospace"),0,2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);msp.setSpan(newTypefaceSpan("serif"),2,4,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//設置字體大小(絕對值,單位:像素)msp.setSpan(newAbsoluteSizeSpan(20),4,6,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);msp.setSpan(newAbsoluteSizeSpan(20,true),6,8,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//第二個參數booleandip,如果為true,表示前面的字體大小單位為dip,否則為像素,同上。//設置字體大小(相對值,單位:像素)參數表示為默認字體大小的多少倍msp.setSpan(newRelativeSizeSpan(0.5f),8,10,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//0.5f表示默認字體大小的一半msp.setSpan(newRelativeSizeSpan(2.0f),10,12,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//2.0f表示默認字體大小的兩倍//設置字體前景色msp.setSpan(newForegroundColorSpan(Color.MAGENTA),12,15,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//設置前景色為洋紅色//設置字體背景色msp.setSpan(newBackgroundColorSpan(Color.CYAN),15,18,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//設置背景色為青色//設置字體樣式正常,粗體,斜體,粗斜體msp.setSpan(newStyleSpan(android.graphics.Typeface.NORMAL),18,20,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//正常msp.setSpan(newStyleSpan(android.graphics.Typeface.BOLD),20,22,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//粗體msp.setSpan(newStyleSpan(android.graphics.Typeface.ITALIC),22,24,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//斜體msp.setSpan(newStyleSpan(android.graphics.Typeface.BOLD_ITALIC),24,27,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//粗斜體//設置下劃線msp.setSpan(newUnderlineSpan(),27,30,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//設置刪除線msp.setSpan(newStrikethroughSpan(),30,33,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//設置上下標msp.setSpan(newSubscriptSpan(),34,35,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//下標msp.setSpan(newSuperscriptSpan(),36,37,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//上標//超級鏈接(需要添加setMovementMethod方法附加響應)msp.setSpan(newURLSpan("tel:4155551212"),37,39,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//電話msp.setSpan(newURLSpan("mailto:[email protected]"),39,41,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//郵件msp.setSpan(newURLSpan(""),41,43,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//網路msp.setSpan(newURLSpan("sms:4155551212"),43,45,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//簡訊使用sms:或者smsto:msp.setSpan(newURLSpan("mms:4155551212"),45,47,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//彩信使用mms:或者mmsto:msp.setSpan(newURLSpan("geo:38.899533,-77.036476"),47,49,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//地圖//設置字體大小(相對值,單位:像素)參數表示為默認字體寬度的多少倍msp.setSpan(newScaleXSpan(2.0f),49,51,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//2.0f表示默認字體寬度的兩倍,即X軸方向放大為默認字體的兩倍,而高度不變//設置字體(依次包括字體名稱,字體大小,字體樣式,字體顏色,鏈接顏色)ColorStateListcsllink=null;ColorStateListcsl=null;XmlResourceParserxppcolor=getResources().getXml(R.color.color);try{csl=ColorStateList.createFromXml(getResources(),xppcolor);}catch(XmlPullParserExceptione){//TODO:handleexceptione.printStackTrace();}catch(IOExceptione){//TODO:handleexceptione.printStackTrace();}XmlResourceParserxpplinkcolor=getResources().getXml(R.color.linkcolor);try{csllink=ColorStateList.createFromXml(getResources(),xpplinkcolor);}catch(XmlPullParserExceptione){//TODO:handleexceptione.printStackTrace();}catch(IOExceptione){//TODO:handleexceptione.printStackTrace();}msp.setSpan(newTextAppearanceSpan("monospace",android.graphics.Typeface.BOLD_ITALIC,30,csl,csllink),51,53,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//設置項目符號msp.setSpan(newBulletSpan(android.text.style.BulletSpan.STANDARD_GAP_WIDTH,Color.GREEN),0,msp.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//第一個參數表示項目符號佔用的寬度,第二個參數為項目符號的顏色//設置圖片Drawabledrawable=getResources().getDrawable(R.drawable.icon);drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());msp.setSpan(newImageSpan(drawable),53,57,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);mTextView.setText(msp);mTextView.setMovementMethod(LinkMovementMethod.getInstance());}}

⑩ 開源的Android富文本編輯器

基於原生EditText+span實現的Android富文本編輯器
github地址: https://github.com/yuruiyin/RichEditor

該組件是基於原生EditText+span的方式實現的,旨在提供一個功能齊全且使用方便的Android富文本編輯器。主要支持了加粗斜體等行內樣式、標題引用等段內樣式以及插入圖片視頻甚至自定義View等。

Step 1. Add the JitPack repository in your root build.gradle at the end of repositories:

Step 2. Add the dependency in your app build.gradle:

說明:各個樣式按鈕的layout由調用方自行完橡殲成

說明:其中ivBold為加粗ImageView,由調用方在layout中粗察定義;R.mipmap.icon_bold_normal和R.mipmap.icon_bold_light是加粗按鈕正常狀態和點亮狀態圖片的資源id。

說明:插入自定義布局最終也是通過bitmap以ImageSpan的形式插入到編輯器中的。

再次附上github地址:梁凳沖 https://github.com/yuruiyin/RichEditor
歡迎star、fork、提issue~

熱點內容
c語言定義體 發布:2025-05-11 10:20:41 瀏覽:252
linuxwhichis 發布:2025-05-11 10:20:09 瀏覽:262
花雨庭伺服器如何發消息 發布:2025-05-11 10:20:08 瀏覽:144
安卓系統時間在哪裡設置 發布:2025-05-11 10:10:37 瀏覽:986
我的世界租賃伺服器怎麼換皮膚 發布:2025-05-11 10:09:59 瀏覽:949
sql插入兩張表 發布:2025-05-11 09:55:33 瀏覽:758
日本編程語言 發布:2025-05-11 09:53:52 瀏覽:844
手機店設置的初始密碼一般是多少 發布:2025-05-11 09:33:15 瀏覽:402
昂科威選擇哪個配置 發布:2025-05-11 09:25:50 瀏覽:36
怎麼解決安卓視頻全屏卡頓 發布:2025-05-11 09:14:55 瀏覽:726