如何在所有屏幕上正确调整imageview的大小?

时间:2011-02-11 12:08:58

标签: android blob drawable favicon

我正在制作迷你书签应用程序。我们的想法是使用存储在浏览器书签数据库中的网站的favicities来填充相对布局。我从数据库中提取了blob图像,并使用Drawable.createFromStream方法将它们转换为drawable。我如何正确地确定这些图像视图的大小,因为它们目前非常小?我遇到的另一个问题是相对布局。如何使用图标正确填充水平区域,以便当它到达屏幕的末尾时,它们会进入新行?

这是我的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ScrollView scrollView = new ScrollView(this);
    RelativeLayout relativeLayout = new RelativeLayout(this);
    ImageView bookmark;

    scrollView.addView(relativeLayout);

    this.startManagingCursor(cursor);
    Uri Bookmarks = Browser.BOOKMARKS_URI;

    cursor = managedQuery(
            Bookmarks, projection, selection, null, Browser.BookmarkColumns.VISITS + " DESC");

    if (cursor.moveToFirst()) {
        int idCounter = 1;
        ByteArrayInputStream blobImage;

        do{
           bookmark = new ImageView(this);
           bookmark.setId(idCounter++);

           blobImage = new ByteArrayInputStream(
                   cursor.getBlob(cursor.getColumnIndex(BookmarkColumns.FAVICON)));

           bookmark.setImageDrawable(
                   Drawable.createFromStream(blobImage, "" + bookmark.getId()));

           RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                   LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

           if(idCounter > 1) {
               params.addRule(RelativeLayout.BELOW, bookmark.getId() - 1);
           }

           relativeLayout.addView(bookmark, params);
        } while (cursor.moveToNext());
     } 

    this.setContentView(scrollView);
}

}

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式来实现您的目标。

但ImageViews具有缩放类型,因此可以强制图像按比例放大但保持比例或按比例放大以便整个视图被填充

http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

在填充屏幕方面,您需要确定每行的图标数量,或者动态决定它们的数量并确定它们的大小。