Как правильно изменить размер изображения на всех экранах? - PullRequest
0 голосов
/ 11 февраля 2011

Я делаю мини-приложение закладок.Идея состоит в том, чтобы заполнить относительный макет значками сайтов, которые хранятся в базе данных закладок браузера.Я извлек изображения блобов из базы данных и преобразовал их в drawables, используя метод Drawable.createFromStream.Как я могу правильно подобрать эти изображения, потому что в настоящее время они очень маленькие?Еще одна проблема, которая у меня есть, это относительная компоновка.Как правильно заполнить горизонтальную область значками, чтобы, когда она достигла конца экрана, они перешли в новую строку?

Вот мой код:

@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 Ответ

1 голос
/ 11 февраля 2011

Есть несколько способов приблизиться к тому, что вы пытаетесь сделать.

Но ImageViews имеют тип масштаба, поэтому изображение можно принудительно увеличивать, но сохранять соотношение или увеличивать, так чтовесь вид заполнен

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

Что касается заполнения экрана, вам необходимо определить либо количество значков в строке, либо динамически определить их количество и изменить их размер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...