我想创建一个TextView,在文本块的中间有一些图像。我用
完成了这个Html.fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
并使用我自己的重叠getDrawable()
方法:
@Override
public Drawable getDrawable(String source){
int id;
if (source.equals("image.png")) {
id = R.drawable.ic_launcher;
} else {
return null;
}
LevelListDrawable d = new LevelListDrawable();
Drawable empty = getResources()
.getDrawable(id);
d.addLevel(0, 0, empty);
d.setBounds(0, 0,
empty.getIntrinsicWidth(),
empty.getIntrinsicHeight());
return d;
}
替换<img>
代码。但是,我加载的图像的下边缘总是与文本的底部对齐,如下所示:
我的问题是:有没有办法垂直居中这些图片?
我使用的HTML源代码是:
title = Html.fromHtml("<img src=\"image.png\" align=\"middle\"/>", this, null);
desc = Html.fromHtml("Text <img src=\"image.png\" align=\"middle\"/> "
+ "text <img src=\"image.png\" align=\"middle\"/> blah blah blah blah blah<br>"
+ "Blah <img src=\"image.png\" align=\"middle\"/> blah blah", this, null);
答案 0 :(得分:0)
尝试将文本的line-height
设置为图像的高度。这将使文本使用的空间与图像一样高,并应使文本垂直居中。
我不确定如何以生成html的方式实现这一点,但您可以尝试这样的方法来添加css:
desc = Html.fromHtml("<div style=\"line-height: 60px;\">Text <img src=\"image.png\" align=\"middle\"/> "
+ "text <img src=\"image.png\" align=\"middle\"/> blah blah blah blah blah<br>"
+ "Blah <img src=\"image.png\" align=\"middle\"/> blah blah</div>", this, null);
当然,您需要将60px更改为图像的高度
答案 1 :(得分:0)
试试这个
desc = Html.fromHtml("Text <img src=\"image.png\" style=\"vertical-align: middle;\" /> "
+ "text <img src=\"image.png\" style=\"vertical-align: middle;\" /> blah blah blah blah blah<br>"
+ "Blah <img src=\"image.png\" style=\"vertical-align: middle;\" /> blah blah", this, null);
这可能会解决您的问题。