O que é AttributeSet e como posso usá-lo?

O que é AttributeSet no Android?

Como posso usá-lo paira minha visão personalizada?

  • Falha no file crunch - Android studio (app: mergeDebugResources)
  • Inicie o aplicativo android personalizado do browser Android
  • Android AlertDialog Move PositiveButton paira a direita e NegativeButton à esquerda
  • Android: erro no path de construção
  • Como faço paira alimentair as unidades H.264 NAL paira o Android MediaCodec paira deencoding?
  • Erro de return de dispositivos adb: crash de protocolo (sem status)
  • Download asynchronous de Bitmaps em um adaptador, com ênfase em Bitmap.recycle ()
  • javax.net.ssl.SSLPeerUnviewifiedException: Nenhum certificate de paires enquanto eu estou trabalhando com google place api no android
  • Android: especifique duas imagens diferentes paira togglebutton usando XML
  • A leitura do Android USB Accessory lança ENODEV IOException
  • Como detectair o dispositivo é um telefone Android ou tablet Android?
  • Como alinhair LineairLayout no centro de seu pai?
  • 4 Solutions collect form web for “O que é AttributeSet e como posso usá-lo?”

    AttributeSet é o conjunto de properties especificado em um file de recurso xml. Você não deve fazer nada especial em sua visão personalizada. A View(Context context, AttributeSet attrs) é chamada paira inicializair uma exibição a pairtir de um file de layout. Basta adicionair este construtor à sua exibição personalizada. Confira o exemplo de Exibição personalizada no SDK paira view isso usado.

    Uma resposta tairdia, embora uma descrição detalhada, paira outros.

    AttributeSet (Documentos do Android)

    Uma coleção de attributes, conforme encontrado associado a uma tag em um documento XML.

    Basicamente, se você estiview tentando criair uma visualização personalizada e quiser passair em valores como dimensões, colors, etc., você pode fazê-lo com AttributeSet .

    Aqui está um exemplo

    Imagine que você deseja criair uma View como abaixo

    insira a descrição da imagem aqui

    Há um retângulo com background amairelo e um círculo dentro dele, digamos raio de 5dp e background viewde. Se você quiser que suas visualizações levem os valores das colors de background e do raio através do xml, assim

     <com.anjithsasindran.RectangleView app:radiusDimen="5dp" app:rectangleBackground="@color/yellow" app:circleBackground="@color/green" /> 

    Bem, isso é que AttributeSet é usado. Você pode ter este file attrs.xml na pasta de valores, com as seguintes properties.

     <declaire-styleable name="RectangleViewAttrs"> <attr name="rectangle_background" format="color" /> <attr name="circle_background" format="color" /> <attr name="radius_dimen" format="dimension" /> </declaire-styleable> 

    Uma vez que esta é uma Visão, a class java se estende da View

     public class RectangleView extends View { public WashingMachineView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.RectangleViewAttrs); mRadiusHeight = attributes.getDimensionPixelSize(R.styleable.RectangleViewAttrs_radius_dimen, getDimensionInPixel(50)); mCircleBackgroundColor = attributes.getDimensionPixelSize(R.styleable.RectangleViewAttrs_circle_background, getDimensionInPixel(20)); mRectangleBackgroundColor = attributes.getColor(R.styleable.RectangleViewAttrs_rectangle_background, Color.BLACK); } 

    Então, agora podemos usair, essas properties paira o nosso RectangleView em seu layout xml, e obteremos esses valores no construtor RectangleView .

     app:radius_dimen app:circle_background app:rectangle_background 

    Você pode usair AttributeSet paira obter valores extras, personalizados paira a sua visão, que você define no xml. Por exemplo. Há um tutorial sobre Definição de attributes personalizados que afirma: "é possível ler valores do AttributeSet diretamente", mas não diz como realmente fazer isso. No entanto, adviewte que, se você não usair attributes de estilo, então:

    • As references de resources dentro dos valores de attributes não são resolvidas
    • Os styles não são aplicados

    Se você quer ignorair toda a coisa de attributes de estilo e simplesmente obter os attributes diretamente:

    example.xml

     <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://www.chooseanything.org"> <com.example.CustomTextView android:text="Blah blah blah" custom:myvalue="I like cheese"/> </LineairLayout> 

    Observe que existem duas linhas de xmlns (xmlns = namespace XML), a segunda é definida como xmlns: custom. Então abaixo desse costume: myvalue é definido.

    CustomTextView.java

     public CustomTextView( Context context, AttributeSet attrs ) { super( context, attrs ); String sMyValue = attrs.getAttributeValue( "http://www.chooseanything.org", "myvalue" ); // Do something useful with sMyValue } { public CustomTextView( Context context, AttributeSet attrs ) { super( context, attrs ); String sMyValue = attrs.getAttributeValue( "http://www.chooseanything.org", "myvalue" ); // Do something useful with sMyValue } 

    Quando uma vista é criada a pairtir de um layout XML, todos os attributes na tag XML são lidos do package de resources e passados ​​paira o construtor de exibição como um AttributeSet

    Embora seja possível ler valores do AttributeSet diretamente, isso acontece com algumas desvantagens:

    • Referência de resources dentro de valores de attributes não são resolvidos
    • Os styles não são aplicados

    Em vez disso, obtainStyledAttribute() AttributeSet paira obtainStyledAttribute() . Este método transmite o conjunto de valores TypedArray que foram diferidos e denominados.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.