TextView Android中的图像

时间:2013-12-26 07:59:02

标签: android textview

可能是这个问题已被提前,但我没有找到任何适当的答案。我的问题是我有文本查看文本内部我有一些图像资源。 例如

http://xyz.abc.in/sites/xyz.abc.in/icons/wifi.jpg "SomeText goes here
http://xyz.abc.in/sites/xyz.abc.in/icons/lcd.jpg "Somtext goes here"
http://xyz.abc.in/sites/xyz.abc.in/icons/storage.jpg "SomeText goes here"

现在我想将其中一个图像放在文本的左侧(如子弹点)。我怎样才能做到这一点?图像来自服务器,可以更改。

回应:

<div class=\"specsSection\">\n<p><strong>Entertainment on the Go</strong></p>\n
 <table cellpadding=\"5\" cellspacing=\"0\" border=\"0\" class=\"tblSpecs\"><tr><td>
<img src=\"http://xyz.abc.in/sites/xyz.abc.in/icons/dolbyplus.jpg\" />
</td>\n<td>Sharp and Natural Sound with Digital Dolby Plus</td>\n</tr><tr><td>
<img src=\"http://xyz.abc.in/sites/xyz.abc.in/icons/wifi.jpg\" /></td>\n<td>
 GPRS + WiFi (With Voice Calling)</td>\n</tr><tr><td>
<img src=\"http://xyz.abc.in/sites/xyz.abc.in/icons/lcd.jpg\" /></td>\n
<td>7\"Capacitive Touch LCD</td>\n</tr><tr><td>
<img src=\"http://xyz.abc.in/sites/xyz.abc.in/icons/dualcore.jpg\" /></td>\n
<td>Dual Core Processor</td>\n</tr><tr><td>
<img src=\"http://xyz.abc.in/sites/xyz.abc.in/icons/storage.jpg\" /></td>\n
<td>1 GB RAM, 4 GB eMMC</td>\n</tr><tr><td>
<img src=\"http://xyz.abc.in/sites/xyz.abc.in/icons/android.jpg\" /></td>\n
<td>Andorid 4.2 JellyBean</td>\n</tr><tr><td>
<img src=\"http://xyz.abc.in/sites/xyz.abc.in/icons/battery.jpg\" /></td>\n
<td>7+ hours of battery life</td>\n</tr></table></div>\n<div style=\"clear:both\">   </div>\n",

4 个答案:

答案 0 :(得分:1)

@Kirk的想法很好。实现起来并不那么简单。如果您正在阅读Html.fromHtml()的说明,请说:

  

从提供的HTML字符串返回可显示的样式文本。任何    HTML中的标记将显示为通用替换图像   然后您的程序可以通过真实图像进行替换。

Here是这个想法的一个很好的实现。

答案 1 :(得分:0)

尝试以下代码加载图片表单网址

实现处理下载图像或从网络访问图像的Html.ImageGetter's getDrawable方法,然后创建一个drawable并返回该对象。 ?

static ImageGetter imgGetter = new Html.ImageGetter() {
        @Override
       public Drawable getDrawable(String source) {
           Drawable drawable = null;
           drawable = Drawable.createFromPath(source);  // Or fetch it from the URL
           // Important
           drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable
.getIntrinsicHeight());
           return drawable;
    }
    };

并像这样使用TextView上的方法。?

  tv.setText(Html.fromHtml(source, imgGetter, null);

答案 2 :(得分:0)

这是一个简单的方法。

int imageNumber = 1;

String textLine = "<html><body><b>Test</b><i>Italic</i><br/>"
        + "<img src=\"dial.png\"/>This is sample " + "<img src=\"dial.png\"/>" +
                "</body></html>";
textView.setText(Html.fromHtml(textLine , imageGetter, null));

private ImageGetter imageGetter= new ImageGetter() {

    public Drawable getDrawable(String source) {
            Drawable drawable = null;
            if(imageNumber == 1) {
            drawable = getResources().getDrawable(R.raw.icon);
            ++imageNumber;
            } else drawable = getResources().getDrawable(R.raw.a);
            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable
                                .getIntrinsicHeight());

            return drawable;
    }
};

或者如果您想通过使用XML来实现,请尝试使用

<TextView
    android:id="@+id/textImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:drawableLeft="@drawable/dial"
    android:drawablePadding="4dp"
    android:singleLine="true"
    android:text="@string/textName"/>

<强>编辑:

我在这个论坛的某个地方找到了这个代码:它像XML Parser一样解析HTML 使用这个小lib

File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");

Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
   String linkHref = link.attr("href");
   String linkText = link.text();
}
老实说,我没有测试上面的代码。代码标准很可能像xml标签一样处理。所以用“ID”或“scr”来读取它。

试一试!

答案 3 :(得分:0)

最简单的方法:

SpannableStringBuilder builder = new SpannableStringBuilder();


builder.setSpan(new ImageSpan(getApplicationContext(),getImageFromWeb(imglink)),0, builder.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(builder);

从服务器获取图像:

public static Bitmap getImageFromWeb(String imglink) throws IOException
{

Bitmap bmpImage;

URL imgURL = new URL(imglink.toString());
URLConnection conn = imgURL.openConnection();
conn.setConnectTimeout(7000);
conn.connect();

InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);

bmpImage = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
return bmpImage;

}