根据这个问题,我使用了一个自定义ImageGatter类来显示我使用Picasso从TextView中的服务器获取的图像
public class PicassoImageGetter implements Html.ImageGetter {
private TextView textView = null;
Context mContext;
public PicassoImageGetter() {
}
public PicassoImageGetter(TextView target, Context context) {
textView = target;
mContext = context;
}
@Override
public Drawable getDrawable(String source) {
BitmapDrawablePlaceHolder drawable = new BitmapDrawablePlaceHolder();
Picasso.get().load(source).into(drawable);
return drawable;
}
private class BitmapDrawablePlaceHolder extends BitmapDrawable implements com.squareup.picasso.Target {
protected Drawable drawable;
@Override
public void draw(final Canvas canvas) {
if (drawable != null) {
drawable.draw(canvas);
}
}
public void setDrawable(Drawable drawable) {
this.drawable …Run Code Online (Sandbox Code Playgroud) android android-image picasso android-bitmap android-internal-storage
我无法显示保存在res/drawable文件夹中的图像.我使用ImageGetter来做到这一点.代码如下:
ImageGetter imageGetter3 = new ImageGetter() {
public Drawable getDrawable(String source) {
int id=0;
if (source.equals("smiley")) {
id = R.drawable.smiley;
}
Drawable d = getResources().getDrawable(id);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
};
directions += "Je bent bij lokaal " + vertrek.getNaam() + "\n"
+ "Sta met je rug voor de deur\n"
+ Html.fromHtml("<img src=\"smiley\">", imageGetter3, null) + " Draai naar links\n";
Run Code Online (Sandbox Code Playgroud)
我在跑步时在屏幕上看到的是一个带有"obj"文字的小方块.那有什么不对?无法读取图像或其他内容?如何显示图片?
老实说,我用Google搜索了很多,并试图ImageGetter的其他方法为好,但他们都不似乎工作,我想这太,他们不工作:
ImageGetter imageGetter2 = new ImageGetter() {
public Drawable getDrawable(String source) {
Drawable d = null;
d …Run Code Online (Sandbox Code Playgroud) 所以我使用ImageGetter来显示JSON博客文章中的图像.我在日志中获取了正确的源,但是当URL达到setBounds时URL会发生变化.有任何想法吗?
码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blog_view);
Intent intent = getIntent();
Uri blogUri = intent.getData();
mPost = blogUri.toString();
mUrl = getIntent().getStringExtra("mUrl");
TextView textView = (TextView) findViewById(R.id.scrollView1);
textView.setText(Html.fromHtml(mPost, imgGetter, null));
}
private ImageGetter imgGetter = new ImageGetter(){
@Override
public Drawable getDrawable(String source){
Drawable drawable = Drawable.createFromPath(source);
try {
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
}catch (NullPointerException e){
logException(e);
}
return drawable;
}
};
Run Code Online (Sandbox Code Playgroud)
尝试前的"来源"是
http://www.domain.com/images_blog/feature.png
但在捕获中错误是:
无法解码流:
java.io.FileNotFoundException: /http:/www.domain.com/images_blog/feature.png : open failed: ENOENT (No such file or directory)
Run Code Online (Sandbox Code Playgroud) 目前我有几个视图,屏幕分为两个部分
例:
text1 image1
text2
text3
text4
Run Code Online (Sandbox Code Playgroud)
问题是,如果image1很高,它将与左侧的textview重叠,所以我用左边强制textview宽度不超过imageview的左边.
android:layout_toLeftOf="@id/imageView1"
Run Code Online (Sandbox Code Playgroud)
但是,每个textview都与imageview的左边对齐,因为在创建视图之前我不知道它的高度.我希望在imageview基线下面的所有textview删除布局规则android:layout_toLeftOf
所以我搜索解决方案并找到两种方法?
1.onWindowFocusChanged
2.getViewTreeObserver().addOnGlobalLayoutListener
Run Code Online (Sandbox Code Playgroud)
两者都可以获得视图的y轴.
问题是:
1. what is the difference between them ?
2. I tried approach 2 , but it is not working, how to fix it?
Run Code Online (Sandbox Code Playgroud)
码:
image.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ImgY = image.getY();
}
});
lng.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (lng.getY() > ImgY) {
lng.removeRule(RelativeLayout.LEFT_OF);
}
}
});
Run Code Online (Sandbox Code Playgroud)
错误是我想设置一个全局值来存储imageview的y,但它警告The final local variable ImgY cannot be assigned, since …