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

Добавить scroll view в собственный вью

20.01.2016, 01:26. Просмотров 528. Ответов 12
Метки нет (Все метки)

Я создал класс, наследуемый от вью, добавил его в разметку. Теперь я хочу программно при создании моего вью добавить в него скролл вью. создаю я его так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public NewsView(Context context){
        super(context);
        onCreate();
    }
    public NewsView(Context context,AttributeSet attrs){
        super(context, attrs);
        onCreate();
    }
    public NewsView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        onCreate();
    }
    protected void onCreate(){
        scv = new ScrollView(getContext());
        scv.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
        scv.getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;
}
но дело в том что я не могу задать width и height, тк вылетает ошибка java.lang.NullPointerException. Че делать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2016, 01:26
Ответы с готовыми решениями:

Добавить view runTime
Здравствуйте, у меня есть listView, мне нужно например в первый item добавить...

Fragment как в нем добавить List View
В моей программе я с главного активити через naviganion drawer попадаю во...

Как добавить view в конец списка группы expandablelistview
ExpandableListView - список to-do. Как добавить в конец каждого списка поле для...

В чем разница (View view) и (View v)
Я только начинаю изучать программирование под андроид (до этого вобще...

Public void onClick(View view)
Не работает public void onClick(View view) :wall: public class MainActivity...

12
Pablito
2767 / 2198 / 744
Регистрация: 12.05.2014
Сообщений: 7,719
Завершенные тесты: 1
20.01.2016, 11:40 2
внутрь View нельзя вот просто так взять и добавить другое вью
0
danyasworld
4 / 4 / 1
Регистрация: 12.04.2015
Сообщений: 226
Завершенные тесты: 1
20.01.2016, 15:53  [ТС] 3
Паблито,Но через LayoutInflater можно загрузить вью, созданное в xml разметке. Так что же мешает создать его программно?
0
Pablito
2767 / 2198 / 744
Регистрация: 12.05.2014
Сообщений: 7,719
Завершенные тесты: 1
20.01.2016, 16:00 4
еще раз, медленно
нельзя добавить одно вью в другое, создать можно, но добавить не получится
добавлять можно только в лаяут

так как драма в первом сообщении происходит внутри кастомного вью - добавить в него же другое вью не получится
даже в xml нельзя создать так, вот НЕ валидная конструкция
XML
1
2
3
4
5
6
7
8
    <View
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
 
        <View
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </View>
0
androbro
344 / 304 / 68
Регистрация: 17.10.2014
Сообщений: 903
20.01.2016, 16:11 5
Цитата Сообщение от Паблито Посмотреть сообщение
нельзя добавить одно вью в другое, создать можно, но добавить не получится
добавлять можно только в лаяут
немножко не верно, не правильно судить о том можно или нет добавлять дочерние элементы из названия(типа если это *View то добавлять ничего нельзя, а если *Layout то добавлять можно), т.к. есть еще и View-контейнеры.
Более правильно будет - если вьюшка наследуется от ViewGroup, тогда она может содержать дочерние элементы.
0
Pablito
2767 / 2198 / 744
Регистрация: 12.05.2014
Сообщений: 7,719
Завершенные тесты: 1
20.01.2016, 16:18 6
именно так как я и написал - если это View то добавить в него ничего нельзя

ViewGroup это уже наследник View и в нем добавлены соответствующие методы
вьюшка не наследуется от ViewGroup, а наоборот

вью контейнеры, это не View - это вью контейнеры
0
androbro
344 / 304 / 68
Регистрация: 17.10.2014
Сообщений: 903
20.01.2016, 16:28 7
Цитата Сообщение от Паблито Посмотреть сообщение
именно так как я и написал - если это View то добавить в него ничего нельзя
ViewGroup это уже наследник View и в нем добавлены соответствующие методы
вьюшка не наследуется от ViewGroup, а наоборот
в общем ошибка понимания, Вы понимаете под View исключительно сам класс, при этом наследников не считаете View.
я же всех наследников View считаю View.
1
danyasworld
4 / 4 / 1
Регистрация: 12.04.2015
Сообщений: 226
Завершенные тесты: 1
23.01.2016, 17:25  [ТС] 8
Паблито, ScrollVIew к чему тогда относится?

Добавлено через 2 минуты
тогда я вообще по другому задам вопрос. Мне нужно создать структуру, которая будет созержать в себе scrollview и мноество дочернх элементов, напиханых в скролл вью, а так же будет легко добавляться в xml разметку. наверное следует наследовать от scroll view тогда?
0
Pablito
2767 / 2198 / 744
Регистрация: 12.05.2014
Сообщений: 7,719
Завершенные тесты: 1
25.01.2016, 11:24 9
начни с HelloWorld
0
danyasworld
4 / 4 / 1
Регистрация: 12.04.2015
Сообщений: 226
Завершенные тесты: 1
25.01.2016, 11:38  [ТС] 10
Паблито, зачем? Я уже сделал этот компонент, наследовав его от скролл вью, и у меня вме отлично
0
Pablito
2767 / 2198 / 744
Регистрация: 12.05.2014
Сообщений: 7,719
Завершенные тесты: 1
25.01.2016, 11:56 11
Цитата Сообщение от danyasworld Посмотреть сообщение
и у меня вме отлично
у тебя в скролл вью несколько дочерних элементов и все отлично?
0
danyasworld
4 / 4 / 1
Регистрация: 12.04.2015
Сообщений: 226
Завершенные тесты: 1
25.01.2016, 12:09  [ТС] 12
Цитата Сообщение от Паблито Посмотреть сообщение
у тебя в скролл вью несколько дочерних элементов и все отлично?
мне скролл вью нужен только как оболочка, что бы скроллить. Что мне мешает положить в него релатив/линеар лайоут, а в лайоут уже класть все остальное?
0
danyasworld
4 / 4 / 1
Регистрация: 12.04.2015
Сообщений: 226
Завершенные тесты: 1
21.02.2016, 00:18  [ТС] 13
в общем делаю этот вью дальше - появилась интересная проблема - гружу картинки и текст и вывожу в виде блоков. Все работает, битмапы оптимизировал(recycle) в общем все как надо. но вот незадача приложение отваливается с out of memory. Картинок много(их еще сделаю, уменьшу и тд) но как освобождать память? есть компонент - list view. Он судя по всему удаляе вышедшие за экран итемы, и пересоздает их при возвращении. Пробовол сделать подобное - брал и менял у вью LayoutParams с WRAP_CONTENT на фиксированный размер, а затем удалял внутренние вью, но размер не сохраняется и скролл вью прыгает. Есть ли готовые решения/примеры реализации, на которых можно научится ДЕЛАТЬ САМОМУ, понять так сказать, принцип работы?
0
21.02.2016, 00:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2016, 00:18

View вытесняет другое view из activity
После второго EditText должна располагаться кнопка. Но почему-то этот второй...

Поиск по лист вью
Помогите, кому не сложно, с приложением...не отображается лист вью, и...

Разворот вью на весь экран
Зравствуйте форумчане. Создаю кастомный view, хочу развернуть на весь экран(т.е...


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

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

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