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

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

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

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

27.01.2016, 10:48. Просмотров 1743. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2016, 10:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как изменить размер ImageView из кода? (Программирование Android):

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

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

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

Динамический размер ImageView - Программирование Android
Здравствуйте. У меня есть xml файл с ImageView, в который я загружаю изображение из интернета (с помощью Picasso) добавляю его в лейаут....

ImageView и размер файла - Программирование Android
Суть проблемы - на карте размещаются маркеры и хотелось бы в них добавить изображения, но вес одного фото примерно 4 мб , нужны же...

Скопировать картинку из одной ImageView в другую ImageView - Программирование Android
В ImageView поставлена картинка методом setImageResource. По нажатию на неё, нужно такую-же картинку поставить в другую вью, а в первой...

10
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
27.01.2016, 10:50 #2
Цитата Сообщение от gvsp Посмотреть сообщение
Сработает ли так:
Цитата Сообщение от gvsp Посмотреть сообщение
Или 9 строку надо так:
Цитата Сообщение от gvsp Посмотреть сообщение
Вот такой ещё вариант нашёл:
А проверить религия не позволяет?
0
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
27.01.2016, 10:55  [ТС] #3
Spelcrawler, Да просто вчера ничего не нашёл. И задал вопрос тут. А сегодня что то похожее по ссылкам отсюда нахожу, но Android Studio под рукой нет.
0
yaran
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 49
27.01.2016, 18:00 #4
Java
1
imageView.setLayoutParams(new RelativeLayout.LayoutParams(тут число в пикселях, и тут число в пикселях));
1
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
28.01.2016, 00:33  [ТС] #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); // меняем параметр
0
Mikalai
256 / 232 / 94
Регистрация: 11.01.2015
Сообщений: 656
28.01.2016, 01:18 #6
gvsp, попробуй так:
Java
1
2
3
int width = 100;
int height = 100;
imageView.setMeasuredDimension(width, height)
Хотя метод не для этого предназначен. И вообще задача странная.
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
28.01.2016, 09:17 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Недавно делал подобную задачу, к сожалению, под рукой кода нет.
Если не ошибаюсь, там как раз setLayoutParams. Даже если такой метод не подошёл бы к изображению, можно было бы вставить его внутрь какого-нибудь LinearLayout и применить к нему.
1
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
28.01.2016, 09:19  [ТС] #8
Mikalai, Спасибо, уже получилось через imageView.setLayoutParams(params)
А что странного в задаче, должна меняться высота колонны. Соответственно колонна разбита на три ImageView. Высоту колонны меняю меняя из кода android:layout_height. Вначале пробовал анимацией, но анимация только создаёт ощущение изменения размера, а соседние элементы не замечают этого.

Добавлено через 1 минуту
CoolMind, Да, спасибо, выше я уже написал, что всё получилось. К сожалению не могу сам на свой ответ поставить галочку решение.
0
Pablito
2476 / 1960 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 1
28.01.2016, 12:51 #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);
1
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
28.01.2016, 12:56  [ТС] #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); // меняем параметр
1
CoolMind
28.01.2016, 14:18     Как изменить размер ImageView из кода?
  #11

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2016, 14:18
Привет! Вот еще темы с ответами:

Как из кода узнать размер шрифта TextView - Программирование Android
Вопрос в заголовке

Как обработать нажатие на ImageView? - Программирование Android
Ребят, не пойму в чем ошибка, как обработать нажатие на картинку? public class MainActivity extends ActionBarActivity implements...

Как обработать нажатие ImageView - Программирование Android
Создаю программу на Андроиде. И сразу столкнулся с проблемой. Почему то не получается... Создаю три объекта ImageView, и надо при нажатии...

Title. Изменить размер текста - Программирование Android
Здравствуйте. Какой атрибут можно использовать, что бы установить свой размер текста "Теория"? <?xml version="1.0" encoding="utf-8"?> ...


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

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

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