実際には両方が同じです。最初のXMLでは、それが直接、カスタムクラスを使用して宣言しています秒1で
<view xmlns:android="http://schemas.android.com/apk/res/android"
class="android.support.design.widget.Snackbar$SnackbarLayout"
(class
プロパティで定義されている)、それはタイプandroid.support.design.widget.Snackbar$SnackbarLayout
の観点であろうと述べています。カスタムビューは内部クラスとして定義されていない場合にのみ
第二形式は
From Android Documentation
使用することができ現在、当社のカスタムコンポーネントを持っているが、どのように我々はそれを使用することができますか? NotePadの例では、カスタムコンポーネントは宣言的なレイアウトから直接使用されるので、res/layoutフォルダのnote_editor.xmlを見てください。
<view
class="com.android.notepad.NoteEditor$MyEditText"
id="@+id/note"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:drawable/empty"
android:padding="10dip"
android:scrollbars="vertical"
android:fadingEdge="vertical" />
カスタムコンポーネントは、XMLの汎用ビューとして作成され、クラスはフルパッケージを使用して指定されます。また、定義した内部クラスは、Javaプログラミング言語の内部クラスを参照する標準的な方法であるNoteEditor $ MyEditText表記を使用して参照されることにも注意してください。
カスタムViewコンポーネントが内部クラスとして定義されていない場合は、XML要素名でViewコンポーネントを宣言し、クラス属性を除外できます。たとえば、次のようにMyEditTextクラスは今、別のクラスファイルであることを
<com.android.notepad.MyEditText
id="@+id/note"
... />
注意してください。クラスがNoteEditorクラスにネストされている場合、この手法は機能しません。
その他の属性とパラメータは、カスタムコンポーネントコンストラクタに渡され、EditTextコンストラクタに渡されるため、EditTextビューで使用するパラメータと同じです。独自のパラメータを追加することも可能であることに注意してください。これについては以下でもう一度触れます。
これだけです。確かにこれは単純なケースですが、それがポイントです。カスタムコンポーネントを作成することは、必要なだけ複雑になります。
もっと洗練されたコンポーネントは、さらに多くの... onメソッドをオーバーライドし、独自のヘルパーメソッドを導入し、そのプロパティと動作を実質的にカスタマイズします。唯一の制限はあなたの想像力と、コンポーネントに必要なものです。
これは理解するのに十分でしょうか?http://developer.android.com/guide/topics/ui/custom-components.html#modifying –