Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
GiGaBiTe911
24 / 24 / 1
Регистрация: 04.02.2013
Сообщений: 132
Записей в блоге: 1
1

Программное добавление View

30.07.2013, 18:11. Просмотров 1335. Ответов 6
Метки нет (Все метки)

Доброго времени. Знаю что на эту тему много инфы, как на форуме так и на других ресурсах, но решения своей проблемы все же не нашел. суть вот в чем. есть активити в которую я могу добавлять View в её layout, для этого получаю сам layout:
Java
1
RelativeLayout layout = (RelativeLayout)findViewById(R.id.main);
и добавляю свой (раннее созданный) View:
Java
1
layout.addView(testBar,layoutParams);
здесь все работает прекрасно.
НО!
есть отдельный Layout:
XML
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main2"
    android:layout_width="fill_parent"
    android:background="@android:color/white"
    android:layout_height="fill_parent"
    android:orientation="vertical" >         
 
</RelativeLayout>
который не принадлежит никакой активити. мне в него тоже нужно из этой же активити добавить View. но при попытке получить к нему доступ таким способом:
Java
1
RelativeLayout layout2 = (RelativeLayout)findViewById(R.id.main2);
возвращает null.
я нашел как получить к нему доступ:
Java
1
RelativeLayout layout3  = (RelativeLayout) LayoutInflater.from(getApplicationContext()).inflate(R.layout.main2, null );
но тогда при добавлении на этот layout своего View - визуально он не отображается, хотя добавление проходит без ошибок.
в чем ошибка?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 18:11
Ответы с готовыми решениями:

Программное добавление View
Всем привет! У меня в роли setContentView выступает класс Draw2D, в котором я...

Программное добавление View
Не могу разобраться: нужно программно прилепить н-ное количество вьюх. Делаю...

Программное добавление View элементов в Fragment
Здравствуйте. Проблема такая: в приложении есть 2 вкладки. Переключение между...

Программное добавление элементов
Уважаемы подскажите такую ситуацию, не могу немного понять...Как на Relative...

Программное добавление строкового ресурса
Здравствуйте! Я храню данные для ListView в XML-файле строковых ресурсов:...

6
Wenceslaus
Android Developer
130 / 130 / 6
Регистрация: 05.07.2013
Сообщений: 205
30.07.2013, 18:26 2
Если Layout не принадлежит Activity, то findViewById(R.id.main2) вернёт null, так как его нет на Activity.
Если вы делаете LayoutInflater.from(getApplicationContext()).inflate(R.layout.main2, null), создавая view и добавляя в него элементы, то он не отобразиться визуально, ибо его нет на Activity.

В первом случае добавьте RelativeLayout в xml Activity.
Во втором: добавьте созданный layout3 на Activity через addView()
0
Yushka
4 / 4 / 0
Регистрация: 24.07.2013
Сообщений: 80
30.07.2013, 18:31 3
Мне кажется, у вас нет отображения самого лэйаута. Например, если вы в xml внутри лэйаута что-нибудь поместите (ту же самую вьюшку), то, опять же, ничего не покажет. Я думаю, что нужно либо в этом же лэйауте (который показывает активити) добавлять, либо к другой активити привязывать второй лэйаут. Если я правильно поняла проблему.
0
GiGaBiTe911
24 / 24 / 1
Регистрация: 04.02.2013
Сообщений: 132
Записей в блоге: 1
31.07.2013, 11:32  [ТС] 4
Цитата Сообщение от Wenceslaus Посмотреть сообщение
Если Layout не принадлежит Activity, то findViewById(R.id.main2) вернёт null, так как его нет на Activity.
да, именно так и происходит.
но тут идея вот в чем, расскажу подробней, может так будет понятней. я использую очень интересную библиотеку SlidingMenu и вот там создается обычное активити и к нему подгружается это SlidingMenu примерно вот так:
Java
1
2
3
4
5
6
7
8
9
10
11
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tabs);                      
        menuS = new SlidingMenu(this);              
        menuS.setMode(SlidingMenu.LEFT);
        menuS.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);      
        menuS.setBehindOffset(20);
        menuS.setFadeDegree(0.5f);              
        menuS.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
        menuS.setMenu(R.layout.slide_menu_layout);  
}
и как видно в строчке menuS.setMenu(R.layout.slide_menu_layout); и задается лайаут самого меню, он никак не привязан к актиаити. но если на него в дизаенере накидать элементов они прекрасно отображаются. но фишка в том, что мне нужно делать это программно.
0
Wenceslaus
Android Developer
130 / 130 / 6
Регистрация: 05.07.2013
Сообщений: 205
31.07.2013, 11:44 5
Так это другое дело. Обычно у таких библиотек помимо
Java
1
menuS.setMenu(int layoutId);//устоновка из xml
есть методы
Java
1
menuS.setMenu(View view);//устоновка из ранее созданного view
Я к чему веду, вам нужно создать view отдельно, затем его установить в меню и обновить (фактически создать меню заново). Метод может именоваться иначе, но он наверняка есть.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
31.07.2013, 11:48 6
Java
1
2
3
menuS.setMenu(R.layout.slide_menu_layout);  
SomeLayout layout = (SomeLayout)menuS.findViewById(R.id.some_layout);
layout.addView(someView);
1
GiGaBiTe911
24 / 24 / 1
Регистрация: 04.02.2013
Сообщений: 132
Записей в блоге: 1
01.08.2013, 09:59  [ТС] 7
Цитата Сообщение от V0v1k Посмотреть сообщение
Java
1
2
3
menuS.setMenu(R.layout.slide_menu_layout);  
SomeLayout layout = (SomeLayout)menuS.findViewById(R.id.some_layout);
layout.addView(someView);
вот так все работает. спасибо
0
01.08.2013, 09:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2013, 09:59

Программное добавление рамки Layout
Добавляю рамку к Layout с помощью XML файла: &lt;shape...

Добавление View (кнопки) в PreferenceScreen
Здравствуйте! не получается добавить View (кнопку) в общую структуру...

Добавление элемента - наследника View
Здравствуйте. Пишу для Android простенькую игрушку. Для нее мне понадобилось...


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

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

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