TextView實現圖文混合編排

来源:http://www.cnblogs.com/Renyi-Fan/archive/2017/08/03/7282156.html
-Advertisement-
Play Games

TextView實現圖文混合編排 一、簡介 在這裡實現圖文混合編排使用的是:TextView中預定義的類似Html的標簽 二、方法 * 1、設置好html標簽的文本 String html="<font>圖片1</font><img src='image1'/>"; html+="<font>圖片2 ...


TextView實現圖文混合編排

一、簡介

 

在這裡實現圖文混合編排使用的是:TextView中預定義的類似Html的標簽

 

二、方法

* 1、設置好html標簽的文本

String html="<font>圖片1</font><img src='image1'/>";
html+="<font>圖片2</font><img src='image2'/>";
html+="<font>圖片3</font><img src='image3'/>";
html+="<font>圖片4</font><img src='image4'/>";
html+="<font>圖片5</font><img src='image5'/>";

 

* 2、為之前的文本聲明Html.fromHtml,方便TextView解析為html標簽

tv_one.setText(Html.fromHtml(text1));

因為有圖片,我們要獲取圖片源,所以上面的那句不行;

所以如下:

CharSequence text=Html.fromHtml(html, new ImageGetter() {中間省略}, null);

new ImageGetter() {中間省略}這部分比較複雜,看實例代碼吧,實質就是取到R文件中圖片對應的ID

 

* 3、將CharSequence字元串序列的文本text插入到TextView控制項中即可

tv_textAndImage.setText(text);

這裡是charSequence是因為Html.fromHtml方法的返回值是Spanned類型,

看下下麵的類圖特別好懂:

 

 

三、代碼實例

效果圖

代碼

 fry.ActivityDemo2

 1 package fry;
 2 
 3 import java.lang.reflect.Field;
 4 
 5 import com.example.textViewDemo1.R;
 6 
 7 import android.app.Activity;
 8 import android.graphics.drawable.Drawable;
 9 import android.os.Bundle;
10 import android.text.Html;
11 import android.text.Html.ImageGetter;
12 import android.widget.TextView;
13 
14 public class ActivityDemo2 extends Activity{
15     private TextView tv_textAndImage;
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         // TODO Auto-generated method stub
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.activity02);
21         setTitle("TextViewDemo2");
22         tv_textAndImage=(TextView) findViewById(R.id.tv_textAndImage);
23         //第一步,設置文本
24         String html="<font>圖片1</font><img src='image1'/>";
25         html+="<font>圖片2</font><img src='image2'/>";
26         html+="<font>圖片3</font><img src='image3'/>";
27         html+="<font>圖片4</font><img src='image4'/>";
28         html+="<font>圖片5</font><img src='image5'/>";
29         //第二步,告訴TextView控制項這是html,並且獲取文本中的圖片源
30         CharSequence text=Html.fromHtml(html, new ImageGetter() {
31             
32             public Drawable getDrawable(String source) {
33                 // TODO Auto-generated method stub
34                 //根據圖片資源ID獲取圖片
35                 //getResources就是去找項目裡面的res文件夾
36                 Drawable drawable=getResources().getDrawable(getDrawableResurceID(source));
37                 //一定要加上邊界這部分代碼。要不然drawable會因為信息不完整讀不出來圖片
38                 //分別是left top width height 
39                 drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
40                 return drawable;
41             }
42         }, null);
43         //第三步、將CharSequence字元串序列的文本text插入到TextView控制項中即可
44         tv_textAndImage.setText(text);
45         
46     }
47     /**
48      * 獲取圖片的資源ID
49      * @param imageName 圖片的名稱
50      * @return 圖片對應的ID
51      * 
52      */
53     private int getDrawableResurceID(String imageName){
54         //利用反射機制取得圖片的id
55         /*
56          * 其實是找com.example.textViewDemo1.R.drawable.image1的值,也就是
57          * public static final int image1=0x7f020001;
58          * 也就是0x7f020001
59          * 例如image1,返回的就是0x7f020001
60          */
61         try {
62             Field field=R.drawable.class.getField(imageName);
63             return Integer.parseInt(field.get(null).toString());  
64         } catch (Exception e) {
65             // TODO Auto-generated catch block
66             e.printStackTrace();
67         }
68         
69         return 0;
70         
71     }
72 }

 

/textViewDemo1/res/layout/activity02.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6     <TextView 
 7         android:id="@+id/tv_textAndImage"
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content"
10         />
11 
12 </LinearLayout>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ————————————————————————————————————————————————————————— 文件拖選v1.0 圖片不清楚時請右鍵點擊"在新鏈接中打開圖片" 實現效果 頁面佈局 實現思路 拖選框 css樣式中設置拖選框樣式,註意設置position: absolute;漂浮狀態 ...
  • *{box-sizing:border-box;} 此情,容器元素css屬性必含overflow:hidden,不然會出問題 $(window).resize(()=>{ $('#willAdjustDiv').width($('#divContainer').width()); }) ; 記錄一下 ...
  • 概述: 身份證的校驗,識別,分離,處處可見。最近H5移動端的項目就需要掃碼獲取身份證,根據身份證自動識別省份、性別、年齡、生日信息。這裡分享完善版,希望大家喜歡。 環境: 依賴jQuery、BootStrap Html JavaScript:身份證驗證及自動識別部分 JavaScript:表單提交校 ...
  • //AJAX $.ajax({ url:"data.txt", type:'get', dataType:'json', data:null, async:true, timeout:1000,//設定超時時間 一般都是3000毫秒 cache:false,//設定GET請求的時候不走 緩存數據,原 ...
  • 這三個事件只在手機上生效 touchstart,手指開始觸屏 touchmove,手指移動 touchend,手指觸屏結束 這個事件在手機上跟在pc端都生效 scroll事件 addeventlistener(name,callback,optional,useCapture) useCapture ...
  • 所有方法基於這個數組: var arr=[1,3,4,5,6,7,8]; 1.length屬性: arr.length;//7 動態獲取數組長度. 2.shift: arr.shift();//1 刪除數組中第一個元素,返回刪除的那個值,並將長度減1;如:console.log(arr.shift( ...
  • 介紹一下 impress.js是一個非常炫酷的幻燈片展示框架,依靠CSS3技術。 impress.js使用起來非常簡單,下麵就來簡單介紹一下其用法。 Start 首先,當然要引入impress.js。 在div標簽設置id為impress(不要求一定是div),然後在你想進行展示的地方加上calss ...
  • 我們開發軟體中應用各種模式,主要是為了 1. 職責劃分:一個類只做一件事 2. 易用,可維護,方便擴展 3. 解耦,相互獨立,可單獨測試 各種設計模式其實都是在解決上面的問題,讓我們對比看看吧。 一、如何理解MVC設計模式 在通常的定義中,MVC 是下圖的結構 但是在 cocoa 體系中,蘋果建議的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...