2012-01-14 15 views
2

複数のサブビュー(TextViews、ImageViewsなど)を含む 'myview.xml'というXMLレイアウトファイルで定義されたRelativeLayoutを持っています。xmlレイアウトファイルからカスタムViewクラスを作成する最も良い方法は?

このRelativeLayoutを表す 'MyView'という名前のViewオブジェクト/クラスを作成して、私が定義するメソッドを使用してサブビューのプロパティを変更し、インスタンスを追加(取得)できるようにしたいMyViewの他のビューから(から)プログラム的に。

これを行うにはどのような方法が最適ですか?現時点では私はこれは動作しますが、それはすべて私のRelativeLayoutsが内に含まれることを意味...でframeLayoutを拡張し、私は次のメソッドを呼び出すでframeLayoutの3つのコンストラクタをオーバーライドで「MYVIEW」という名前のクラス...

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view = inflater.inflate(R.layout.myview, null); 
addView(view); 

を作成していますFrameLayoutsのため、ビュー階層に余分な(不要な)レイヤーがあります...

答えて

2

私はほとんど同じことをします。しかし、私はnullではなく 'this'を送信し、そのビューを親ビューに追加しません。

LayoutInflater inflater =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
inflater.inflate(R.layout.myview, this); 
+0

応答のためにありがとうMad Mik。私が 'inflate'メソッドを正しく理解していれば、私はビュー階層内に余分なレイヤーがあることを意味しますが、私がそれをやっているだけではないことを知ってうれしく思います。それと一緒に行こう! :) –

+0

はい。あなたはまだ子供のように膨張した見解で終わります。 – madmik3

関連する問題