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

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

Войти
Регистрация
Восстановить пароль
 
x_Alex_x
17 / 17 / 2
Регистрация: 07.02.2014
Сообщений: 233
#1

Добавить layout на layout - Android

23.01.2015, 18:27. Просмотров 930. Ответов 8
Метки нет (Все метки)

Нашёл такой код: layout.add(view); только не понимаю куда его писать. Нужно чтобы один layout можно было использовать в нескольких других.
Сейчас я на главное активити устанавливаю layout так: setContentView(R.layout.main); и теперь в определённое место этого main хочу добавить другой layout.
Покажите пожалуйста подробней как нужно делать.

Добавлено через 1 час 56 минут
Попробую перефразировать: нужно следать класс - элемент, который будет иметь свой layout и экземпляры этого класса можно будет добавлять на активити как, например, кнопки (хотя я даже не знаю можно ли программно добавить кнопку на активити).
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2015, 18:27     Добавить layout на layout
Посмотрите здесь:

Авторазмер в Layout Android
Android Очистить layout
Как программно добавить элемент в уже существующий layout? Android
Android Разметка layout
Android layout 9 inch
Drawer Layout Android
Android Имя layout
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
24.01.2015, 01:45     Добавить layout на layout #2
Цитата Сообщение от x_Alex_x Посмотреть сообщение
можно ли программно добавить кнопку на активити
Можно, как и любой View, соответственно и ViewGroup. Только нужно вызвать requestLayout() и invalidate(), а вообще, в нете полно информации по этой теме.
x_Alex_x
17 / 17 / 2
Регистрация: 07.02.2014
Сообщений: 233
24.01.2015, 03:29  [ТС]     Добавить layout на layout #3
contedevel, про кнопки и другие View мне пока понятно. Но в первую очередь меня интересует программное добавление одного layout, созданного в .xml файле в другой layout. Проблема в том, что на layout я могу добавлять только View элементы, а из layout я могу максимум получить его id (int id=R.layout.main). Получается, нужно как-то layout преобразовать во View.
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
24.01.2015, 06:52     Добавить layout на layout #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вам нужен LayoutInflater в нем метод inflate, который вернет Вам View.
x_Alex_x
17 / 17 / 2
Регистрация: 07.02.2014
Сообщений: 233
24.01.2015, 13:49  [ТС]     Добавить layout на layout #5
Спасибо! Это то, что было нужно. Вот такой код получился:
Java
1
2
3
4
5
6
7
8
9
10
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 
    setContentView(R.layout.first_layout);
    LayoutInflater layInfl = this.getLayoutInflater();
    View v = layInfl.inflate(R.layout.second_layout,null,false);
    LinearLayout linLay = (LinearLayout) findViewById(R.id.linlay);
    linLay.addView(v);
}
Добавлено через 23 минуты
Немного переделал код:
Java
1
2
3
4
5
6
7
8
9
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 
    setContentView(R.layout.first_layout);
    LayoutInflater layInfl = this.getLayoutInflater();
    LinearLayout linLay = (LinearLayout) findViewById(R.id.linlay);
    View v = layInfl.inflate(R.layout.second_layout,linLay,true);
}
Теперь View v добавляется на linLay сразу в методе inflate.
Но как мне теперь указать параметры размещения v на linLay?
При добавлении после метода inflate такой строки:
Java
1
v.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
возникает ошибка.
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
24.01.2015, 13:54     Добавить layout на layout #6
Прочтите мой первый ответ.
x_Alex_x
17 / 17 / 2
Регистрация: 07.02.2014
Сообщений: 233
24.01.2015, 14:34  [ТС]     Добавить layout на layout #7
contedevel, requestLayout() вроде-бы здесь не нужно, linLay.invalidate() не помогло. Или Вы про информацию в интернете?
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
24.01.2015, 16:17     Добавить layout на layout #8
Мне просто с телефона писать неудобно... Взывать нужно эти методы, они построят Ваш слой, в который Вы добавите свой View новым параметрами

Добавлено через 15 минут
Вот нашел код:
Java
1
2
3
4
5
6
7
8
9
LinearLayout mainLayout = (LinearLayout)findViewById(R.id.mainlayout);
        
    // Добавляем новый ImageView
    ImageView imageView = new ImageView(MainActivity.this);
    imageView.setImageResource(R.drawable.icon);
    LayoutParams imageViewLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    imageView.setLayoutParams(imageViewLayoutParams);
  
    mainLayout.addView(imageView);
Видимо addView сам вызывает эти методы

Добавлено через 6 минут
Киньте весь код добавления и текст ошибки
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2015, 17:23     Добавить layout на layout
Еще ссылки по теме:

Android Перерисовка layout
Квадратный Layout Android
Layout Android
При нажатию на кнопку добавить Layout Android
Лупа на layout Android

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

Или воспользуйтесь поиском по форуму:
x_Alex_x
17 / 17 / 2
Регистрация: 07.02.2014
Сообщений: 233
24.01.2015, 17:23  [ТС]     Добавить layout на layout #9
Цитата Сообщение от contedevel Посмотреть сообщение
Вот нашел код:
Я переделал свой код чтобы было как здесь и, можно сказать, всё нормально работает, но только если LayoutParams задаю константами. В противном случае мой View заполняет весь экран. Пока что меня это устраивает.
Yandex
Объявления
24.01.2015, 17:23     Добавить layout на layout
Ответ Создать тему
Опции темы

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