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

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

Войти
Регистрация
Восстановить пароль
 
danyasworld
4 / 4 / 1
Регистрация: 12.04.2015
Сообщений: 226
Завершенные тесты: 1
#1

Добавить scroll view в собственный вью - Программирование Android

20.01.2016, 01:26. Просмотров 420. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добавить scroll view в собственный вью (Программирование Android):

Добавить view runTime - Программирование Android
Здравствуйте, у меня есть listView, мне нужно например в первый item добавить два textview, а во второй 4, это нужно делать runtime,...

Fragment как в нем добавить List View - Программирование Android
В моей программе я с главного активити через naviganion drawer попадаю во фрагмент и в этом фрагменте мне нужно чтобы у меня был list view....

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

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

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

Разворот вью на весь экран - Программирование Android
Зравствуйте форумчане. Создаю кастомный view, хочу развернуть на весь экран(т.е сначала вью находится внутри скролл вью, а при нажатии...

12
Pablito
2477 / 1961 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 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
2477 / 1961 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 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
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 846
20.01.2016, 16:11 #5
Цитата Сообщение от Паблито Посмотреть сообщение
нельзя добавить одно вью в другое, создать можно, но добавить не получится
добавлять можно только в лаяут
немножко не верно, не правильно судить о том можно или нет добавлять дочерние элементы из названия(типа если это *View то добавлять ничего нельзя, а если *Layout то добавлять можно), т.к. есть еще и View-контейнеры.
Более правильно будет - если вьюшка наследуется от ViewGroup, тогда она может содержать дочерние элементы.
0
Pablito
2477 / 1961 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 1
20.01.2016, 16:18 #6
именно так как я и написал - если это View то добавить в него ничего нельзя

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

вью контейнеры, это не View - это вью контейнеры
0
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 846
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
2477 / 1961 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 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
2477 / 1961 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2016, 00:18
Привет! Вот еще темы с ответами:

Public void onClick(View view) - Программирование Android
Не работает public void onClick(View view) :wall: public class MainActivity extends AppCompatActivity implements View.OnClickListener...

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

Доступ к элементам вью во время создания Activity - Программирование Android
Есть Activity. На ней textView. Мне нужно поставить этот textView в определенное место в зависимости от размера экрана. Хочу вызывать...

Как поменять текст внутри вью полученного через layoutinflater? - Программирование Android
Как поменять текст внутри вью полученного через layoutinflater? LayoutInflater inflater = getLayoutInflater(); View element1 =...


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

Или воспользуйтесь поиском по форуму:
13
Yandex
Объявления
21.02.2016, 00:18
Ответ Создать тему
Опции темы

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