Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/120: Рейтинг темы: голосов - 120, средняя оценка - 4.68
14 / 3 / 0
Регистрация: 10.11.2015
Сообщений: 71

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

27.01.2016, 10:48. Показов 23087. Ответов 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); // меняем параметр
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.01.2016, 10:48
Ответы с готовыми решениями:

Как можно указать размер ImageView из кода в DP
Здравствуте, подскажите пожалуйста. Как можно указать размер ImageView из кода в DP? И еще: если изображение загружается из интернета, то...

Программно изменить размер ImageView
public void displeisize() { DisplayMetrics displaymetrics = getResources().getDisplayMetrics(); int...

Как изменить размер кнопки сворачивания блока кода?
Может показаться мелочью, но неподсказали бы, как изменить размер симвлола сворачивания/разворачивания в редакторе VS2013, имею в виду этот:

10
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
27.01.2016, 10:50
Цитата Сообщение от gvsp Посмотреть сообщение
Сработает ли так:
Цитата Сообщение от gvsp Посмотреть сообщение
Или 9 строку надо так:
Цитата Сообщение от gvsp Посмотреть сообщение
Вот такой ещё вариант нашёл:
А проверить религия не позволяет?
0
14 / 3 / 0
Регистрация: 10.11.2015
Сообщений: 71
27.01.2016, 10:55  [ТС]
Spelcrawler, Да просто вчера ничего не нашёл. И задал вопрос тут. А сегодня что то похожее по ссылкам отсюда нахожу, но Android Studio под рукой нет.
0
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 49
27.01.2016, 18:00
Java
1
imageView.setLayoutParams(new RelativeLayout.LayoutParams(тут число в пикселях, и тут число в пикселях));
1
14 / 3 / 0
Регистрация: 10.11.2015
Сообщений: 71
28.01.2016, 00:33  [ТС]
Ничего не работает. 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); // меняем параметр
0
266 / 242 / 96
Регистрация: 11.01.2015
Сообщений: 673
28.01.2016, 01:18
gvsp, попробуй так:
Java
1
2
3
int width = 100;
int height = 100;
imageView.setMeasuredDimension(width, height)
Хотя метод не для этого предназначен. И вообще задача странная.
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
28.01.2016, 09:17
Лучший ответ Сообщение было отмечено gvsp как решение

Решение

Недавно делал подобную задачу, к сожалению, под рукой кода нет.
Если не ошибаюсь, там как раз setLayoutParams. Даже если такой метод не подошёл бы к изображению, можно было бы вставить его внутрь какого-нибудь LinearLayout и применить к нему.
1
14 / 3 / 0
Регистрация: 10.11.2015
Сообщений: 71
28.01.2016, 09:19  [ТС]
Mikalai, Спасибо, уже получилось через imageView.setLayoutParams(params)
А что странного в задаче, должна меняться высота колонны. Соответственно колонна разбита на три ImageView. Высоту колонны меняю меняя из кода android:layout_height. Вначале пробовал анимацией, но анимация только создаёт ощущение изменения размера, а соседние элементы не замечают этого.

Добавлено через 1 минуту
CoolMind, Да, спасибо, выше я уже написал, что всё получилось. К сожалению не могу сам на свой ответ поставить галочку решение.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
28.01.2016, 12:51
о боже, да любому 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);
1
14 / 3 / 0
Регистрация: 10.11.2015
Сообщений: 71
28.01.2016, 12:56  [ТС]
Паблито, Спасибо. Я уже всё решил, примерно так же, только у меня был 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); // меняем параметр
2
28.01.2016, 14:18

Не по теме:

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.01.2016, 14:18
Помогаю со студенческими работами здесь

Как изменить размер шрифта самого кода в IntelliJ IDEA?
Как изменить размер шрифта самого кода в intellij IDEA? ctrl+колёсико не помагает, перешел на intellij idea и тут такая хрень уже глаза...

Как задать относительный размер ImageView?
Есть 9 ImageView, которые расположены в RelativeLayout При этом на экране в 4 дюйма они нужного размера, но на экране в 7 или 10 они...

Изменить размер iframe из кода содержимого
Возможно ли так делать в последних версиях браузеров и как?

Как изменить размер TImage под текущий размер Picture ?
Доброго времени суток! Есть задача (Delphi 7). В TImage загружается Picture с условиями: Center := True; Proportional := True; ...

Как в IntelliJ IDEA увеличить размер (размер редактора, кода)?
как в IntelliJ IDEA увеличит размер (размер редактора, кода)?


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru