Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
x_Alex_x
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
1

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

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

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

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

Анимированный дизайн смены Layout или просто выдвигаемый layout
Ну, думаю тут и так всё понятно. Я просто не знаю, какие ключевые слова вводить в гугл, всё что...

Не хочет работать в layout, но включается в layout-land
доброе утро ! пишу первое приложение. обычный мейн.хмель выглядит вот так : <?xml...

At android.widget.LinearLayout.setChildFrame Layout в Layout-те
Нужен совет бывалых. У меня есть активити которое запускается с мейн активити, на нем лежит Layout...

Можно ли добавить каталог в папку layout?
Вопрос дурацкий, но нагуглить ничего не получилось. Или формулирую не так или это слишком просто...

При нажатию на кнопку добавить Layout
не подскажете как по нажатию на кнопку вставить LinearLayout с определенной разметкой в тот Layout...

8
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
24.01.2015, 01:45 2
Цитата Сообщение от x_Alex_x Посмотреть сообщение
можно ли программно добавить кнопку на активити
Можно, как и любой View, соответственно и ViewGroup. Только нужно вызвать requestLayout() и invalidate(), а вообще, в нете полно информации по этой теме.
1
x_Alex_x
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
24.01.2015, 03:29  [ТС] 3
contedevel, про кнопки и другие View мне пока понятно. Но в первую очередь меня интересует программное добавление одного layout, созданного в .xml файле в другой layout. Проблема в том, что на layout я могу добавлять только View элементы, а из layout я могу максимум получить его id (int id=R.layout.main). Получается, нужно как-то layout преобразовать во View.
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
24.01.2015, 06:52 4
Лучший ответ Сообщение было отмечено x_Alex_x как решение

Решение

Вам нужен LayoutInflater в нем метод inflate, который вернет Вам View.
0
24.01.2015, 06:52
x_Alex_x
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
24.01.2015, 13:49  [ТС] 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));
возникает ошибка.
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
24.01.2015, 13:54 6
Прочтите мой первый ответ.
0
x_Alex_x
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
24.01.2015, 14:34  [ТС] 7
contedevel, requestLayout() вроде-бы здесь не нужно, linLay.invalidate() не помогло. Или Вы про информацию в интернете?
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
24.01.2015, 16:17 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 минут
Киньте весь код добавления и текст ошибки
1
x_Alex_x
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
24.01.2015, 17:23  [ТС] 9
Цитата Сообщение от contedevel Посмотреть сообщение
Вот нашел код:
Я переделал свой код чтобы было как здесь и, можно сказать, всё нормально работает, но только если LayoutParams задаю константами. В противном случае мой View заполняет весь экран. Пока что меня это устраивает.
0
24.01.2015, 17:23
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2015, 17:23

Как программно добавить элемент в уже существующий layout?
как программно добавить элемент в уже существующий layout? например при нажатии кнопки. нужно...

Layout
Здравствуйте! На layout кидаю изображение через ImaageView, при эмуляции по бокам экрана есть...

Android layout
Доброго времени суток. Подскажите пожалуйста. Проблема такая, есть Activity с кнопками и т. д.,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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