2017-01-23 3 views
0

Для моего проекта я хочу создать строку, которая имеет несколько элементов этого типа: my custom viewКак абстрагироваться группа взглядов

После того, как у меня есть эта «база» макет/настройка вида я хочу, чтобы иметь возможность используйте его несколько раз для обработки различных типов действий, таких как: Кнопка «Сохранить» с текстом «Сохранить» и изображение как звезда или кнопка совместного доступа с текстом как «общий», а изображение в виде значка общего доступа

Так что в конечном итоге я хочу отвлечь этот пользовательский вид, чтобы позволить мне сделать это.

Некоторые вещи, которые я видел для этого, были <include>, <merge> и создание пользовательского класса вида.

Мои мысли о каждом из этого:

<include>: Это на самом деле не позволяет мне, чтобы иметь возможность настроить содержимое прилагаемого макета, только повторно использовать некоторые общие XML

<merge>: Точно так же это не предлагает аспект настройки

Класс пользовательского вида: Я не пишу представление, которое делает то, что не предлагается по умолчанию для андроида (например, добавление вида круговой диаграммы или что-то еще), но я просто совмещаю группа уже реализованных представлений. Я действительно думаю, что этот метод может решить мою проблему. Я просто не уверен, что это правильный путь.

В действительности я знаю, что три точки зрения не так уж много кода, чтобы воспроизвести каждый раз, когда я использую его, но я думал, что было бы полезно, чтобы выяснить способ абстрагироваться этой группу

+0

Тег '' действительно может быть настроен. Вы можете настроить свои собственные атрибуты и использовать их при рисовании 'View'. [Здесь] (https://developer.android.com/training/custom-views/create-view.html) - это детали – Sunshinator

ответ

0

создать собственный класс является лучшим.

class MyView extends View { 
    public MyView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 
} 

Позже определите пользовательские атрибуты.

<resources> 
    <declare-styleable name="MyClass"> 
     <attr name="xxx" format="boolean" /> 
    </declare-styleable> 
</resources> 

запомнить добавить в свой проект.

+0

Почему вы говорите, что это «лучший» подход к решению этого? Существуют ли другие возможные подходы? –

Смежные вопросы