:コードからビューを作成するときに使用する
public View (Context context)
シンプルなコンストラクタ。
このコンストラクタは、Javaでビューを作成するために使用できるものです。 XMLから膨らませるときは呼び出されません。
public View (Context context, AttributeSet attrs)
XMLからの眺めを膨張させたときに呼び出されるコンストラクタ。これは、ビューがXMLファイルから構築され、XMLファイルで指定された属性を提供するときに呼び出されます。このバージョンではデフォルトのスタイル0が使用されるため、適用される唯一の属性値は、コンテキストのテーマと指定されたAttributeSetの値です。
onFinishInflate()メソッドは、すべての子が追加された後に呼び出されます。
したがって、スタイルを指定しないときにXMLからビューを展開すると、このコンストラクタが呼び出されます。
public View (Context context, AttributeSet attrs, int defStyle)
XMLからインフレを実行し、クラス固有の基本スタイルを適用します。 Viewのこのコンストラクタでは、サブクラスが膨張しているときにサブクラスが独自の基本スタイルを使用できます。たとえば、Buttonクラスのコンストラクタはこのバージョンのスーパークラスコンストラクタを呼び出し、defStyleにR.attr.buttonStyleを指定します。これにより、テーマのボタンスタイルで基本ビューのすべての属性(特に背景)とButtonクラスの属性を変更することができます。
あなたはこれらのコンストラクタのすべてを実装する必要がありますが、あなたは、それぞれ、最初の二つのためthis(context, null)
とthis(context, attrs, 0)
を呼び出すことによって、三番目に作業のすべてを置くことができます。
super(context、attrs)とsuper(context、attrs、0)は私のために差別的に機能します。最初のものは大丈夫ですが、2番目のビューは元のスタイルをビューから削除するので、私はこれを使うことができません(context、attrs、0)。 Androidの新しいバージョンではバグですか? – broot
コンストラクタ呼び出しをカスケードしないでください。以下の私の答えを見てください。 – Jin
私はこれがJinの答えだと思います:http://stackoverflow.com/a/34301725/326874 – aeracode