Я знаю, что можно создать настраиваемый элемент пользовательского интерфейса (посредством представления или определенного расширения элемента пользовательского интерфейса). Но возможно ли определить новые свойства или атрибуты для вновь созданных элементов пользовательского интерфейса (я имею в виду не унаследованные, а совершенно новые, чтобы определить какое-то конкретное поведение, которое я не могу обработать с помощью свойств или атрибутов по умолчанию)
например, элемент мой настраиваемый элемент:
<com.tryout.myCustomElement
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Element..."
android:myCustomValue=<someValue>
/>
Так можно ли определить MyCustomValue ?
Спасибо
android
custom-controls
Точка
источник
источник
Ответы:
Да. Краткое руководство:
1. Создайте атрибут XML.
Создайте внутри новый XML-файл
/res/values/attrs.xml
с атрибутом и его типомВ основном вам нужно настроить один
<declare-styleable />
для своего представления, который содержит все ваши настраиваемые атрибуты (здесь только один). Я так и не нашел полного списка возможных типов, так что, думаю, вам нужно поискать в источнике. Типы, которые я знаю, - это ссылка (на другой ресурс), цвет, логическое значение, размер, число с плавающей запятой, целое число и строка . Они довольно понятны2. Используйте атрибуты в макете.
Это работает так же, как и выше, за одним исключением. Вашему настраиваемому атрибуту требуется собственное пространство имен XML.
Довольно прямолинейно.
3. Используйте полученные значения.
Измените конструктор вашего настраиваемого представления, чтобы проанализировать значения.
distanceExample
в этом примере является частной переменной-членом.TypedArray
есть много других вещей для анализа других типов значений.И это все. Используйте проанализированное значение в вашем,
View
чтобы изменить его, например, используйте его,onDraw()
чтобы изменить внешний вид соответствующим образом.источник
http://schemas.android.com/apk/res-auto
при объявлении пользовательского пространства именString initialText = attrs.getAttributeValue("http://schemas.android.com/apk/res-auto", "initialText");
где attr - это AttributeSet, который передается в конструктор, а 'initialText' - это имя вашего настраиваемого атрибутаВ папке res / values создайте attr.xml. Здесь вы можете определить свои атрибуты:
Когда вы затем захотите использовать его в своем файле макета, вы должны добавить
а затем вы можете использовать значение с
customname:myCustomValue=""
источник
Да, можно, просто используйте
<resource>
тег.как это:
ссылка с официального сайта
источник