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

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

Восстановить пароль Регистрация
 
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
10.09.2014, 04:21     Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками #1
Нужно написать свой компонент для частого использования в дальнейшем - редактор с двумя кнопками и одной текстовой строкой описания. Многократно в ставлять в одну или несколько активити.

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

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

Работа с кнопками Android
Как правильно делать из своего проекта jar для использования в другом проекте Android
Свой Браузер для андроида Android
Android Как правильно присвоить переменным данные для использования с другом методе?
Как сохранять информацию о пользователе и использовать её в дальнейшем уведомлении? Android
Загрузить данные один раз с MySQL таблицы в память приложения, и в дальнейшем использовать ее Android
Android Компонент для отображения лога (аналог memo в Windows)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 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;
        
        
    }
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
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);
    }
 
}


Не вылетает, но и не работает. Место с компонентом в активити остается пустым... Что я упустил?
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
11.09.2014, 10:20     Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками #4
Tester64, а зачем класс?) Сделайте простой метод, возвращающий View. А, не досмотрел, это кастомный View. Тут не нужно объявлять View, нужно как то так:
Java
1
2
3
4
//вместо
view = inflater.inflate.....
//вот так
this = inflater.inflate.....
Добавлено через 4 минуты
Но я обычно так не заморачиваюсь, просто делаю метод и все, хотя правильнее конечно как у вас)
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
11.09.2014, 10:29     Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками #5
Tester64, а разве не .inflate(.., this); ?

Добавлено через 23 секунды
Цитата Сообщение от Tester64 Посмотреть сообщение
extends View
ViewGroup наверное
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
11.09.2014, 10:30     Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками #6
YuraAAA, Второй параметр ведь родительская вьюшка? Как может быть она сама себе родителем?
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
11.09.2014, 10:39     Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками #7
Цитата Сообщение от Spelcrawler Посмотреть сообщение
//вот так
this = inflater.inflate.....
эм, точно не так. Не можем мы менять self-link.
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Второй параметр ведь родительская вьюшка? Как может быть она сама себе родителем?
а Вы попробуйте
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
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-ах? Мне "зацепиться" незачто... Основу не понимаю!
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 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);
}
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
11.09.2014, 17:22  [ТС]     Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками #10
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Дак делайте в коде хоть в цикле
Вы не поняли! Вставлять я буду в ручную! Управлять размерами и взаиморазмещением. Втраивать в лайауты или даже в закладки. Задавать для каждого компонента лишь id для обращения из функций.
Но если это будет 3-4 компонента вместо одного, мороки будет на порядок больше. Прийдется следить за уникальностью кода кажного встроенного компонента. Правильно встраивать реакторы с одного на другой. Легко запутаться. Легко опечататься. Контроля нет! Опять же тяжело быстро переименовать задав разумное название вместо номера.

В делфи можно было создавать компоненты, которые появлялись в репозитории. В студии подобное возможно? Что-бы с превьювом. Пока получил черный(прозрачный?) компонент на черном фоне. Что за компонент там лежит могу увидеть лишь читая XML.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
11.09.2014, 17:27     Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками #11
Цитата Сообщение от Tester64 Посмотреть сообщение
В студии подобное возможно? Что-бы с превьювом
Возможно, вы как раз так и делали. Но вот я не сталкивался с несколькими View в одном, потому подсказать не могу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2014, 20:24     Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками
Еще ссылки по теме:

Однократно ввести номер телефона, и в дальнейшем не выводить Android
Android На каждой странице ViewPager'а должен отображаться свой ListFragment данные для которого берутся из базы
Random, как избавиться от частого выпадания одинаковых чисел? Android
Android Какой компонент использую для вывода сообщений на экран например чата?
Посоветуйте компонент для графика Android

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

Или воспользуйтесь поиском по форуму:
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
11.09.2014, 20:24  [ТС]     Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками #12
Кажется нащупал решение... сейчас "тестю"
Полноценный вьюв не получился - сделаю класс "присоску" к инклюду. id заменю на тег. Тогда может смогу находить элементы по тегу и не бояться повторов... Инклюд виден в превьюве - помогает составлять адектватный дизайн еще до запуска. Осталось протестить на нескольких редакторах с поиском по номерам тегов...

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

Хотя обидно что не получилось свой вьюв написать...
Yandex
Объявления
11.09.2014, 20:24     Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками
Ответ Создать тему
Опции темы

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