Eu sei que é possível criar um elemento de interface do usuário personalizado (por meio de modo de exibição ou extensão de elemento de interface de usuário específico). Mas é possível definir novas propriedades ou atributos para elementos de interface do usuário recém-criados (quero dizer, não herdados, mas totalmente novos para definir algum comportamento específico que não sou capaz de lidar com propriedades ou atributos padrão)
por exemplo, elemento meu elemento personalizado:
<com.tryout.myCustomElement
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Element..."
android:myCustomValue=<someValue>
/>
Então, é possível definir MyCustomValue ?
THX
android
custom-controls
Parada
fonte
fonte
Respostas:
Sim. Guia resumido:
1. Crie um atributo XML
Crie um novo arquivo XML dentro
/res/values/attrs.xml
, com o atributo e seu tipoBasicamente, você deve configurar um
<declare-styleable />
para sua visualização que contenha todos os seus atributos personalizados (aqui apenas um). Nunca encontrei uma lista completa dos tipos possíveis, então você precisa procurar na fonte, eu acho. Tipos que eu conheço são referência (para outro recurso), cor, booleano, dimensão, flutuante, inteiro e string . Eles são bastante autoexplicativos2. Use os atributos em seu layout
Isso funciona da mesma maneira que você fez acima, com uma exceção. Seu atributo personalizado precisa de seu próprio namespace XML.
Bem direto.
3. Faça uso dos valores que você passar
Modifique o construtor de sua visualização personalizada para analisar os valores.
distanceExample
é uma variável de membro privado neste exemplo.TypedArray
tem muitas outras coisas para analisar outros tipos de valores.E é isso. Use o valor analisado em seu
View
para modificá-lo, por exemplo, use-o emonDraw()
para alterar a aparência de acordo.fonte
http://schemas.android.com/apk/res-auto
ao declarar o namespace personalizadoString initialText = attrs.getAttributeValue("http://schemas.android.com/apk/res-auto", "initialText");
onde attr é o AttributeSet que é passado no construtor e 'initialText' é o nome do seu atributo personalizadoEm sua pasta res / valores, crie attr.xml. Lá você pode definir seus atributos:
Quando você quiser usá-lo em seu arquivo de layout, você deve adicionar
e então você pode usar o valor com
customname:myCustomValue=""
fonte
Sim, você pode
<resource>
. Basta usar a tag.como isso:
link do site oficial
fonte