Androidがviewに値を付ける方法はいくつありますか?

4166 ワード

一、コード
二、layout
三、styles.xml、この前提はattrsです.xmlは、jvmがまずattrsに基づいているため、この属性を定義する.xmlの各ノードは各オブジェクトを生成し、定義がなければstylesで直接使用すると、ポインタが空になります.
たとえば.
このファイルに置くと、viewに直接関連付けられるわけではありません.カスタムviewのコンストラクション関数呼び出しを行うには、
カスタムviewの3番目のコンストラクション関数は自動的に呼び出されず、手動で呼び出され、1つの関数があります.
obtainStyledAttributes(AttributeSet set,                  int[] attrs, int defStyleAttr, int defStyleRes) 
int[]attrsはattrsで定義されたノードであり、多くのサブアイテムがある可能性があります.
<attr name="sex" format="string" />
なので配列です
int defStyleAttrこのパラメータは少し奇抜で、このパラメータは本質的にattrsなので、呼び出すときはr.attrsです.ただし、このノードはstylesのthemeノードで呼び出されるので値が得られます.通常、定義時にformat=referecesとなります.これにより、呼び出すときにstylesの1つのノードを指定し、多くのサブ属性の付与を得ることができます.
ではなぜ、attrsがたくさん定義されているのでしょうか.しかし、layoutでは必ずしもすべて使用されるとは限らないので、デフォルト値を設定しておきます.
最後に、前の値が0であるか、属性が見つからない場合に呼び出されます.
このように論理的に明らかになったのは、3番目がデフォルト値であり、3番目に設定されたitemが4番目に値を探しに行かない場合、または3番目が0の場合、4番目にデフォルト値(3番目はレイアウトに書かないために構築された)である.
実は3番目に使うのは少なくて、直接値を0にして、4番目の中でstyleの値を書きます
スタイルが呼び出され、レイアウトファイルの値が書かれている場合は、自然にレイアウトファイルが優先されます.
スタイルで

では
attrsでは
<resources>

    <declare-styleable name="Customize">
        <attr name="sex" format="string" />

    </declare-styleable>



</resources>

四、appthemeで
これもstyelesです.xmlは、app全体のトピックとして存在するにすぎず、アプリケーションはロード時にmanifestのandroid:theme="@style/AppTheme"に基づいてこのノードの各サブアイテムをロードします.
この過程で,一つのviewの属性に対する付与を間接的に行った.