Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
#1

Как изменить размер ImageView из кода? - Android

27.01.2016, 10:48. Просмотров 1161. Ответов 10
Метки нет (Все метки)

Нужно в зависимости от условий рассчитывать и менять высоту изображения ImageView.
Так, как относительно этой ImageView позиционируются другие, то ScaleAnimation не подошло, соседние вьюшки на анимационные изменения размера не реагируют.
В принципе если нет метода для масштабирования изображения меня устроит возможность из кода менять android:layout_height, но не нашёл как. Нужное мне изображение я в background могу поместить, а в src однопиксельное прозрачное.

Добавлено через 7 часов 17 минут
Сработает ли так:
Java
1
2
3
4
5
6
7
8
9
10
11
public class MainActivity extends ActionBarActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ImageView iv = (ImageView)  findViewById(R.id.imageView1); // изображение с которым работаем
            int MyHeight = 200; // желаемая высота, будет меняться по условиям
            float density = getApplicationContext().getResources().getDisplayMetrics().density; // плотность пикселей экрана
            iv.setLayoutParams(new LayoutParams(wrap_content), (int) (density * MyHeight)));
        }
}
Добавлено через 34 минуты
Или 9 строку надо так:
Java
1
iv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, (int) (density * MyHeight)));
Добавлено через 27 минут
Вот такой ещё вариант нашёл:
Java
1
2
3
4
5
ImageView imageView = findViewById(R.id.imageView1);
LayoutParams params = (LayoutParams) imageView.getLayoutParams(); // получаем параметры
int MyHeight = 200; // желаемая высота, будет меняться по условиям
params.height = MyHeight; // меняем высоту. Если уползёт выравнивание, то imageView.getLayoutParams().width = MyHeight;
imageView.setLayoutParams(params); // меняем параметр
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
27.01.2016, 10:50     Как изменить размер ImageView из кода? #2
Цитата Сообщение от gvsp Посмотреть сообщение
Сработает ли так:
Цитата Сообщение от gvsp Посмотреть сообщение
Или 9 строку надо так:
Цитата Сообщение от gvsp Посмотреть сообщение
Вот такой ещё вариант нашёл:
А проверить религия не позволяет?
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
27.01.2016, 10:55  [ТС]     Как изменить размер ImageView из кода? #3
Spelcrawler, Да просто вчера ничего не нашёл. И задал вопрос тут. А сегодня что то похожее по ссылкам отсюда нахожу, но Android Studio под рукой нет.
yaran
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 49
27.01.2016, 18:00     Как изменить размер ImageView из кода? #4
Java
1
imageView.setLayoutParams(new RelativeLayout.LayoutParams(тут число в пикселях, и тут число в пикселях));
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
28.01.2016, 00:33  [ТС]     Как изменить размер ImageView из кода? #5
Ничего не работает. LayoutParams Android Studio не знает. С RelativeLayout.LayoutParams вылетает с ошибкой, наверное потому, что вьюшка не в RelativeLayout лежит.

Добавлено через 23 минуты
Заработало так:
Java
1
2
3
4
5
            ImageView imageView = (ImageView)  findViewById(R.id.kolonna2_center);
            LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) imageView.getLayoutParams(); // получаем параметры
            int MyHeight = 200; // желаемая высота, будет меняться по условиям
            params.height = MyHeight; // меняем высоту. Если уползёт выравнивание, то imageView.getLayoutParams().width = MyHeight;
            imageView.setLayoutParams(params); // меняем параметр
Mikalai
254 / 230 / 93
Регистрация: 11.01.2015
Сообщений: 649
28.01.2016, 01:18     Как изменить размер ImageView из кода? #6
gvsp, попробуй так:
Java
1
2
3
int width = 100;
int height = 100;
imageView.setMeasuredDimension(width, height)
Хотя метод не для этого предназначен. И вообще задача странная.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
28.01.2016, 09:17     Как изменить размер ImageView из кода? #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Недавно делал подобную задачу, к сожалению, под рукой кода нет.
Если не ошибаюсь, там как раз setLayoutParams. Даже если такой метод не подошёл бы к изображению, можно было бы вставить его внутрь какого-нибудь LinearLayout и применить к нему.
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
28.01.2016, 09:19  [ТС]     Как изменить размер ImageView из кода? #8
Mikalai, Спасибо, уже получилось через imageView.setLayoutParams(params)
А что странного в задаче, должна меняться высота колонны. Соответственно колонна разбита на три ImageView. Высоту колонны меняю меняя из кода android:layout_height. Вначале пробовал анимацией, но анимация только создаёт ощущение изменения размера, а соседние элементы не замечают этого.

Добавлено через 1 минуту
CoolMind, Да, спасибо, выше я уже написал, что всё получилось. К сожалению не могу сам на свой ответ поставить галочку решение.
Паблито
2012 / 1754 / 545
Регистрация: 12.05.2014
Сообщений: 6,208
Завершенные тесты: 1
28.01.2016, 12:51     Как изменить размер ImageView из кода? #9
о боже, да любому View можно задать параметры через get/setLayoutParams()
если сначала делать get то желательно знать какого типа параметры (Relative/Frame и т.д.) что бы не городить конструкции с проверками instanceof

если размеры и положение вьюшки уже известно и на его LayoutParams наплевать то можно сразу делать примерно так
Java
1
2
3
4
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params.topMargin = 500; // типа координаты в контейнере по Y
        params.leftMargin = 500; // и X
        view.setLayoutParams(params);
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
28.01.2016, 12:56  [ТС]     Как изменить размер ImageView из кода? #10
Паблито, Спасибо. Я уже всё решил, примерно так же, только у меня был LinearLayout. Выше написал как Как изменить размер ImageView из кода?
Напишу ещё тут, а то там на чинается со слов: Ничего не работает и никто дальше не читает, что заработало
РАБОТАЕТ ТАК:
Java
1
2
3
4
5
            ImageView imageView = (ImageView)  findViewById(R.id.kolonna2_center); // вьюшка с которой работаем
            LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) imageView.getLayoutParams(); // получаем параметры
            int MyHeight = 200; // желаемая высота, будет меняться по условиям
            params.height = MyHeight; // меняем высоту
            imageView.setLayoutParams(params); // меняем параметр
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2016, 14:18     Как изменить размер ImageView из кода?
Еще ссылки по теме:

Скопировать картинку из одной ImageView в другую ImageView Android
Как из кода узнать размер шрифта TextView Android
Title. Изменить размер текста Android
Android Программно изменить размер ImageView
Android ImageView и размер файла

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
CoolMind
28.01.2016, 14:18     Как изменить размер ImageView из кода?
  #11

Не по теме:

Цитата Сообщение от gvsp Посмотреть сообщение
Напишу ещё тут, а то там на чинается со слов: Ничего не работает и никто дальше не читает, что заработало
А я прочитал, но не понял, что это вы сами себе ответили на вопрос, решил просто подтвердить правильность.

Yandex
Объявления
28.01.2016, 14:18     Как изменить размер ImageView из кода?
Ответ Создать тему
Опции темы

Текущее время: 06:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru