Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
bazed
1 / 1 / 1
Регистрация: 23.09.2014
Сообщений: 18
#1

SetContentView и layoutParams - Программирование Android

21.05.2015, 11:58. Просмотров 609. Ответов 12
Метки нет (Все метки)

Почему когда я не передаю lp в setContentView, lin занимает весь экран, словно у него MATCH_PARENT, хотя я для него через setLayourParams устанавливаю WRAP_CONTENT?

А вот так, (c явной передачей lp) lin рисуется с WRAP_CONTENT
Java
1
2
3
4
5
LinearLayout lin = new LinearLayout(this);
        lin.setOrientation(LinearLayout.VERTICAL);
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
        lin.setLayoutParams(lp);
setContentView(lin,lp);
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2015, 11:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос SetContentView и layoutParams (Программирование Android):

Использование атрибута weight в LayoutParams
Activity состоит из таблицы, каждая строка которой также является таблицей и...

SetContentView
Можно ли метод setContentView(R.layout.main) вызывать в методе скажем...

Как изменить setContentView
Пытаюсь поменять layout и у меня ни чего не получается, то есть кнопки не...

Обязательно ли вызывать setContentView?
Необходимо сделать активность (first), которая будет, например, заставкой с...

Как выполнить setContentView из другого класса?
Есть класс "Core" который является "точкой входа" в приложение, и есть класс в...


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

Или воспользуйтесь поиском по форуму:
12
Pablito
2652 / 2134 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
21.05.2015, 12:02 #2
щито?
а можно еще раз, медленнее? )
0
bazed
1 / 1 / 1
Регистрация: 23.09.2014
Сообщений: 18
21.05.2015, 12:04  [ТС] #3
что конкретно непонятно?
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
21.05.2015, 12:05 #4
bazed, ничего не понятно. Вы пробовали делать то же самое не кодом, а через xml? Где, кстати, сам xml layout'а? Почему вы уверены, что элементы (строчки) разметки не занимают всю ширину экрана?
И что за запись такая:
Цитата Сообщение от bazed Посмотреть сообщение
Почему когда я не передаю lp в setContentView
0
Pablito
2652 / 2134 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
21.05.2015, 12:11 #5
меня смущает что сначала лаяуту назначаются параметры, а потом в setContentView передается этот же лаяут, а с ним снова параметры
0
bazed
1 / 1 / 1
Регистрация: 23.09.2014
Сообщений: 18
21.05.2015, 12:18  [ТС] #6
Так я и говорю, если я передаю только лэйаут (lin), то он рисуется без учета переданных ему параметров (lp)
А если передаю и lin и lp, тогда все рисуется как задумывалось.

CoolMind, потому что я посмотрел результат на эмуляторе, как же еще? Передача lp в setContentView изменяет отображаение
0
Pablito
2652 / 2134 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
21.05.2015, 13:41 #7
Цитата Сообщение от bazed Посмотреть сообщение
А если передаю и lin и lp, тогда все рисуется как задумывалось
значит так и надо делать

метод setContentView с одним параметром просит на вход не какой-нибудь Layout, а View
а что бы через inflater создать вью из лаяута понадобится id этого лаяута, которое программно задается через ж..у
а через xml легко и просто
0
bazed
1 / 1 / 1
Регистрация: 23.09.2014
Сообщений: 18
21.05.2015, 13:50  [ТС] #8
Паблито, тут роли не играет, можно и View передать, кнопку например. То же самое выходит.

Без передачи в setContentView вторым аргументом layoutParams ничего не выходит
То есть setLayoutParams не дает эффекта, все равно надо передавать LayoutParams вместе с View
0
Pablito
2652 / 2134 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
21.05.2015, 13:59 #9
Цитата Сообщение от bazed Посмотреть сообщение
То есть setLayoutParams не дает эффекта, все равно надо передавать LayoutParams вместе с View
да, я это и говорю уже второй раз
0
bazed
1 / 1 / 1
Регистрация: 23.09.2014
Сообщений: 18
21.05.2015, 14:01  [ТС] #10
Паблито, так а почему так?
0
Pablito
2652 / 2134 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
21.05.2015, 14:01 #11
Лучший ответ Сообщение было отмечено bazed как решение

Решение

public void setContentView (View view)
Added in API level 1

Set the activity content to an explicit view. This view is placed directly into the activity's view hierarchy. It can itself be a complex view hierarchy. When calling this method, the layout parameters of the specified view are ignored. Both the width and the height of the view are set by default to MATCH_PARENT. To use your own layout parameters, invoke setContentView(android.view.View, android.view.ViewGroup.LayoutParams) instead.
жирненьким выделил основную мысль
1
bazed
1 / 1 / 1
Регистрация: 23.09.2014
Сообщений: 18
21.05.2015, 14:08  [ТС] #12
Паблито, теперь все ясно, спасибо
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
21.05.2015, 16:57 #13
bazed, а еще можно сначала задать лейаут в качестве contentView, а потом ему назначить параметры, тогда тоже нормально отработает)
0
21.05.2015, 16:57
Ответ Создать тему
Опции темы

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