Android開發(fā)實(shí)現(xiàn)在TextView前面加標(biāo)簽示例
效果
代碼實(shí)現(xiàn): 自定義TextView
public class TagTextView extends AppCompatTextView { private View view;//標(biāo)簽布局的最外層布局 private Context mContext; private TextView tv_tag; private StringBuffer content_buffer; //必須重寫所有的構(gòu)造器,否則可能會(huì)出現(xiàn)無(wú)法inflate布局的錯(cuò)誤! public TagTextView(Context context) { super(context); mContext = context; } public TagTextView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; } public TagTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mContext = context; } public void setContentAndTag(String content, List<String> tags) { content_buffer = new StringBuffer(); for (String item : tags) {//將每個(gè)tag的內(nèi)容添加到content后邊,之后將用drawable替代這些tag所占的位置 content_buffer.append(item); } content_buffer.append(content); SpannableString spannableString = new SpannableString(content_buffer); for (int i = 0; i < tags.size(); i++) { String item = tags.get(i); View view = LayoutInflater.from(mContext).inflate(R.layout.layout_texttab, null);//R.layout.tag是每個(gè)標(biāo)簽的布局 tv_tag = view.findViewById(R.id.tv_tag); tv_tag.setText(item); Bitmap bitmap = convertViewToBitmap(view); Drawable d = new BitmapDrawable(bitmap); d.setBounds(0, 0, tv_tag.getWidth(), tv_tag.getHeight());//缺少這句的話,不會(huì)報(bào)錯(cuò),但是圖片不回顯示 ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM);//圖片將對(duì)齊底部邊線 int startIndex; int endIndex; startIndex = getLastLength(tags, i ); endIndex = startIndex + item.length(); Log.e("tag", "the start is" + startIndex + "the end is" + endIndex); spannableString.setSpan(span, startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } setText(spannableString); setGravity(Gravity.CENTER_VERTICAL); } private static Bitmap convertViewToBitmap(View view) { view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.buildDrawingCache(); Bitmap bitmap = view.getDrawingCache(); return bitmap; } private int getLastLength(List<String> list, int maxLength) { int length = 0; for (int i = 0; i < maxLength; i++) { length += list.get(i).length(); } return length; } }
自定義一個(gè)layout_texttab布局
<?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:id="@+id/tv_tag" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginBottom="2dp" android:layout_marginRight="5dp" android:background="@drawable/round_blue" android:gravity="center_vertical" android:paddingBottom="2dp" android:paddingLeft="3dp" android:paddingRight="3dp" android:text="標(biāo)簽" android:textColor="@android:color/white" android:textSize="12sp"/> </LinearLayout>
使用
<com.zc.tool.TagTextView android:id="@+id/text_tab" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="12dp" android:textColor="@color/white" android:gravity="center" />
List<String> tags = new ArrayList<>(); tags.add("@用戶"); tags.add("@程序猿"); tags.add("@產(chǎn)品經(jīng)理"); textTab.setContentAndTag("改個(gè)需求", tags);
以上就是Android開發(fā)實(shí)現(xiàn)在TextView前面加標(biāo)簽示例的詳細(xì)內(nèi)容,更多關(guān)于Android開發(fā)TextView前加標(biāo)簽的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android在類微信程序中實(shí)現(xiàn)藍(lán)牙聊天功能的示例代碼
這篇文章主要介紹了Android在類微信程序中實(shí)現(xiàn)藍(lán)牙聊天功能,本文通過(guò)實(shí)例代碼給大家介紹的非常想詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06android獲取屏幕的長(zhǎng)與寬實(shí)現(xiàn)代碼(手寫)
android中獲取屏幕的長(zhǎng)于寬,參考了網(wǎng)上有很多代碼,但結(jié)果與實(shí)際不符,如我的手機(jī)是i9000,屏幕大小是480*800px,得到的結(jié)果卻為320*533,于此問(wèn)題很是疑惑,于是自己寫了幾行代碼,親測(cè)一下,效果還不錯(cuò),需要了解的朋友可以參考下2012-12-12Android實(shí)現(xiàn)3D標(biāo)簽云簡(jiǎn)單效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)3D標(biāo)簽云簡(jiǎn)單效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android 監(jiān)聽(tīng)手機(jī)GPS打開狀態(tài)實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 監(jiān)聽(tīng)手機(jī)GPS打開狀態(tài)實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05Android幀動(dòng)畫、補(bǔ)間動(dòng)畫、屬性動(dòng)畫用法詳解
安卓的三種動(dòng)畫,幀動(dòng)畫,補(bǔ)間動(dòng)畫,屬性動(dòng)畫,大家了解多少,知道如何使用嗎?本文就為大家簡(jiǎn)單介紹Android幀動(dòng)畫、補(bǔ)間動(dòng)畫、屬性動(dòng)畫的使用方法,需要的朋友可以參考下2016-11-11Android 實(shí)現(xiàn)無(wú)網(wǎng)絡(luò)傳輸文件的示例代碼
本篇文章主要介紹了Android 實(shí)現(xiàn)無(wú)網(wǎng)絡(luò)傳輸文件的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02Android中檢查、監(jiān)聽(tīng)電量和充電狀態(tài)的方法
這篇文章主要介紹了Android中檢查、監(jiān)聽(tīng)電量和充電狀態(tài)的方法,如判斷當(dāng)前充電狀態(tài)、監(jiān)聽(tīng)充電狀態(tài)的改變、判斷當(dāng)前剩余電量等,需要的朋友可以參考下2014-06-06快速解決設(shè)置Android 23.0以上版本對(duì)SD卡的讀寫權(quán)限無(wú)效的問(wèn)題
今天小編就為大家分享一篇快速解決設(shè)置Android 23.0以上版本對(duì)SD卡的讀寫權(quán)限無(wú)效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08