将图像宽度更改为match_parent或将图像置于ImageGetter Android中心

时间:2015-06-21 06:31:02

标签: android textview

我使用ImageGetter(在StackOverflow上找到的代码)从html中获取图像,但是获取的图像太小并且左对齐,我想要居中对齐这些图像或使其宽度与父级匹配。有没有办法做到这一点?

URLImageParser:

public class URLImageParser implements Html.ImageGetter {
Context c;
TextView container;

/***
 * Construct the URLImageParser which will execute AsyncTask and refresh the   container
 * @param t
 * @param c
*/
public URLImageParser(TextView t, Context c) {
this.c = c;
this.container = t;
}

public Drawable getDrawable(String source) {
URLDrawable urlDrawable = new URLDrawable();

// get the actual source
ImageGetterAsyncTask asyncTask = 
    new ImageGetterAsyncTask( urlDrawable);

asyncTask.execute(source);

// return reference to URLDrawable where I will change with actual image from
// the src tag
return urlDrawable;
}

public class ImageGetterAsyncTask extends AsyncTask<String, Void, Drawable>     {
URLDrawable urlDrawable;

public ImageGetterAsyncTask(URLDrawable d) {
    this.urlDrawable = d;
}

@Override
protected Drawable doInBackground(String... params) {
    String source = params[0];
    return fetchDrawable(source);
}

@Override 
protected void onPostExecute(Drawable result) { 
// set the correct bound according to the result from HTTP call 
Log.d("height",""+result.getIntrinsicHeight()); 
Log.d("width",""+result.getIntrinsicWidth()); 
urlDrawable.setBounds(0, 0, 0+result.getIntrinsicWidth(), 0+result.getIntrinsicHeight());  

// change the reference of the current drawable to the result 
// from the HTTP call 
urlDrawable.drawable = result; 

// redraw the image by invalidating the container 
URLImageParser.this.container.invalidate();

// For ICS
    URLImageParser.this.container.setHeight((URLImageParser.this.container.getHeight() 
+ result.getIntrinsicHeight()));

// Pre ICS
URLImageParser.this.container.setEllipsize(null);
} 

/***
 * Get the Drawable from URL
 * @param urlString
 * @return
 */
public Drawable fetchDrawable(String urlString) {
    try {
        URL aURL = new URL(urlString);
        final URLConnection conn = aURL.openConnection(); 
        conn.connect(); 
        final BufferedInputStream bis = new BufferedInputStream(conn.getInputStream()); 
        final Bitmap bm = BitmapFactory.decodeStream(bis);
        Drawable drawable = new BitmapDrawable(bm);
        drawable.setBounds(0,0,bm.getWidth(),bm.getHeight());
        return drawable;
    } catch (Exception e) {
        return null;
    } 
    }
    }

1 个答案:

答案 0 :(得分:0)

如果您想将图像置于ImageView中心,请使用android:scaleType="centerInside"

如果要缩放ImageView中的图像,使最小边与ImageView的大小匹配android:scaleType="centerCrop"

有关更多ScaleTpzes的信息,请查看: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html