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

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

Войти
Регистрация
Восстановить пароль
 
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками - Программирование Android

10.09.2014, 04:21. Просмотров 558. Ответов 11
Метки нет (Все метки)

Нужно написать свой компонент для частого использования в дальнейшем - редактор с двумя кнопками и одной текстовой строкой описания. Многократно в ставлять в одну или несколько активити.

Возможно ли такое? В какую сторону смотреть? Имеет ли это отношение к фрагментам (пока не использовал - в учебниках "польза" только для разых поворотов)?

В идеале, хотелось бы глобально менять дизайн кнопок подменой XML и стелей, а не "попиксельной" перерисовкой и обработкой клавитуры (как в класическом написании своего компонента). Мог бы заполнять в каждый раз "тройки" элементов вручную и массово задавать имена, но хотелось бы обращаться к ним через один R.id. И не ошибаться в названиях случайно продублировав.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2014, 04:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками (Программирование Android):

Paint: Сохранение точек для использования их при рисовании примитивов в дальнейшем - Visual Basic .NET
Здравствуйте! Я пишу аналог Paint-а. И у меня такая проблема. Я не знаю как сохранять точки(DrawEllipse) в PictureBox1, т.е. чтобы...

.NET 2.x Свой компонент от ListBox. Не могу задать свой тип для Items - C#
День добрый господа. Нуждаюсь в вашей помощи. Суть такова, что я желаю создать свой компонент на базе ListBox. На данный момент меня...

Написать свой html редактор - C# WPF
Добрый день! Появилась идея написать свой html редактор на WPF, заодно подучить эту технологию. С чего посоветуете начать (какой порядок...

Как написать свой Hex редактор - Delphi
Как написать свой Hex-редактор ЗАРАНИЕ БЛАГОДАРЮ

Как видят iframe поисковые системы? Могут ли быть последствия от частого использования? - SEO
Все привет! Насколько мне известно, поисковые системы учитывают ссылки в iframe, собственно, вопрос в том, что будет, если на сайте...

Простая форма для вывода текста с двумя кнопками - HTML, CSS
Здравствуйте. Пытаюсь сделать простую форму для вывода в нее текста и две кнопки ниже формы. В общем-то все сделала, но. Не...

11
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
10.09.2014, 09:49 #2
Нарисуйте отдельный layout файл, потом inflate'ом создайте из него View в этом View можно будет найти кнопки например так:
Java
1
2
3
LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.custom_view, null);
        Button myBtn = view.findViewById(R.id.myBtn);
Если вынести это в отдельный метод, можно в качестве параметров указать, например, строки-названия кнопок и в методе их подставить к кнопкам, затем вернуть получившийся View. Как то так:
Java
1
2
3
4
5
6
7
8
9
10
11
public View getMyCutomView(String btn1Tittle, String btn2Tittle){
        
        View view = View.inflate(context, R.layout.myView, null);
        Button btn1 = view.findViewById(R.id.btn1);
        Button btn2 = view.findViewById(R.id.btn2);
        btn1.setText(btn1Tittle);
        btn2.setText(btn2Tittle);
        return view;
        
        
    }
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
11.09.2014, 09:57  [ТС] #3
Запутался... Попробовал создать свой компонент - наследник от View. Воткнул его в главное XML активити. Создал простой XML (custom_view) с двумя кнопками.
Получилось такое:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class view_test extends View {
 
    public View view;
    public Button myBtn;
 
    public void Init(Context context) {
        LayoutInflater inflater = LayoutInflater.from(context);
        view = inflater.inflate(R.layout.custom_view, null);
        myBtn = (Button) view.findViewById(R.id.bt_test_1);
        myBtn.setText("HELLOW!");
    }
 
    public view_test(Context context) {
        super(context);
        Init(context);
    }
 
    public view_test(Context context, AttributeSet attrs) {
        super(context, attrs);
        Init(context);
    }
 
}


Не вылетает, но и не работает. Место с компонентом в активити остается пустым... Что я упустил?
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
11.09.2014, 10:20 #4
Tester64, а зачем класс?) Сделайте простой метод, возвращающий View. А, не досмотрел, это кастомный View. Тут не нужно объявлять View, нужно как то так:
Java
1
2
3
4
//вместо
view = inflater.inflate.....
//вот так
this = inflater.inflate.....
Добавлено через 4 минуты
Но я обычно так не заморачиваюсь, просто делаю метод и все, хотя правильнее конечно как у вас)
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
11.09.2014, 10:29 #5
Tester64, а разве не .inflate(.., this); ?

Добавлено через 23 секунды
Цитата Сообщение от Tester64 Посмотреть сообщение
extends View
ViewGroup наверное
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
11.09.2014, 10:30 #6
YuraAAA, Второй параметр ведь родительская вьюшка? Как может быть она сама себе родителем?
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
11.09.2014, 10:39 #7
Цитата Сообщение от Spelcrawler Посмотреть сообщение
//вот так
this = inflater.inflate.....
эм, точно не так. Не можем мы менять self-link.
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Второй параметр ведь родительская вьюшка? Как может быть она сама себе родителем?
а Вы попробуйте
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
11.09.2014, 16:26  [ТС] #8
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Но я обычно так не заморачиваюсь, просто делаю метод и все, хотя правильнее конечно как у вас)
Я не против методом, но...
Мне надо МАССОВО вставить в одну форму.
Смотрел в сторону include в XML. Правда еще не тестил, но боюсь будет сбой на одинаковых android:id="@+id/bt_test_1".

Конечная цель - создать компонент типа 1С-совского редактора числа - с кнопкой очистки, вызова калькулятора и подсказки. Этот компонент будет массово произвольно закидываться на разные формы "анкет опросников". Назначение и количество компонент прийдется часто менять. Заморачиваться с дизайном каждой формы и отслеживанием всех имен и зависимостей, вместо 10минутной работы не охота... Задавать надо лишь id для всего компонента, но иметь доступ к его кнопкам и редактору (возможно даже переопределить)!

Перечитал на хабре статьи о создании компонентов, но там все на основе подмены draw. Не хочу рисовать! и подделывать редактор

Цитата Сообщение от YuraAAA Посмотреть сообщение
а Вы попробуйте
Пробовал: view = inflater.inflate(R.layout.custom_view, this); Конечно не работает! Пробовал получить root вместо this: android.view.ViewGroup root = this; Тоже ошибка!

Может где-нибудь видели подобный компонент на github-ах? Мне "зацепиться" незачто... Основу не понимаю!
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
11.09.2014, 16:31 #9
Цитата Сообщение от Tester64 Посмотреть сообщение
Я не против методом, но...
Мне надо МАССОВО вставить в одну форму.
Дак делайте в коде хоть в цикле
Java
1
2
3
4
View[] view = new View[100];
for(int i = 0; i < 100; i++){
    view[i] = getMyCustomView(tittle1,tittle2);
}
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
11.09.2014, 17:22  [ТС] #10
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Дак делайте в коде хоть в цикле
Вы не поняли! Вставлять я буду в ручную! Управлять размерами и взаиморазмещением. Втраивать в лайауты или даже в закладки. Задавать для каждого компонента лишь id для обращения из функций.
Но если это будет 3-4 компонента вместо одного, мороки будет на порядок больше. Прийдется следить за уникальностью кода кажного встроенного компонента. Правильно встраивать реакторы с одного на другой. Легко запутаться. Легко опечататься. Контроля нет! Опять же тяжело быстро переименовать задав разумное название вместо номера.

В делфи можно было создавать компоненты, которые появлялись в репозитории. В студии подобное возможно? Что-бы с превьювом. Пока получил черный(прозрачный?) компонент на черном фоне. Что за компонент там лежит могу увидеть лишь читая XML.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
11.09.2014, 17:27 #11
Цитата Сообщение от Tester64 Посмотреть сообщение
В студии подобное возможно? Что-бы с превьювом
Возможно, вы как раз так и делали. Но вот я не сталкивался с несколькими View в одном, потому подсказать не могу.
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
11.09.2014, 20:24  [ТС] #12
Кажется нащупал решение... сейчас "тестю"
Полноценный вьюв не получился - сделаю класс "присоску" к инклюду. id заменю на тег. Тогда может смогу находить элементы по тегу и не бояться повторов... Инклюд виден в превьюве - помогает составлять адектватный дизайн еще до запуска. Осталось протестить на нескольких редакторах с поиском по номерам тегов...

Добавлено через 1 час 36 минут
Ура! Схема сработала! Остальное - дело техники...
Всем спасибо! Вопрос закрываю!

Хотя обидно что не получилось свой вьюв написать...
0
11.09.2014, 20:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2014, 20:24
Привет! Вот еще темы с ответами:

Подскажите компонент для использования - C++ Builder
Мне нужен компонент типа Stringgrid чтобы в него можно было записать много строк и чтобы их можно было упорядочить сортировать при...

Как создать свой собственный компонент для rad studio? - Delphi
Доброго времени суток. Столкнулся с проблемой создания собственных компонентов, так как понятия не имею с чего начать. Подскажите...

Мышь с двумя боковыми кнопками - Мыши
Посоветуйте недорогую проводную мышь с двумя боковыми кнопками по вертикали как на фото

Часы в текстовом поле с двумя кнопками - Delphi
Задание в текстовой форме Часы. Форма с двумя кнопками. Каждая из кнопок связана с текстовыми полями, первое из кот. - часы, а второе -...


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

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

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