可能是这个问题已被提前,但我没有找到任何适当的答案。我的问题是我有文本查看文本内部我有一些图像资源。 例如
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",
答案 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;
}