プロジェクトの要件に従って、xml ファイルを使用せずにレイアウトをプログラムで設計したいと考えています。しかし、プログラムで使用される用語はxmlファイルとはまったく異なります.xmlファイルなしでプログラムで学習するのに役立つチュートリアルです. 教えて!
2 に答える
View
クラスとその人気のあるサブクラスLinearLayout
( 、 、など)について少し時間をかけて学習することをお勧めしますRelativeLayout
。(また、少し時間をかけて を見てDrawables
ください。)
XML を使用してレイアウトを作成する場合、XML を使用してオブジェクトの階層を定義し、実行時に、XML レイアウト ファイルが記述するオブジェクトの実際の階層にView
「膨張」します。たとえば、最初の XML レイアウト ファイルは、以下を含む単純なファイルである可能性があります(簡潔にするために簡略化していることに注意してください)。View
LinearLayout
TextView
<LinearLayout ... >
<TextView ... />
</LinearLayout>
Activity
を使用してこのレイアウトを使用しますsetContentView()
。
その XML ファイルが行っているのは、必要に応じて、システムが構築 (またはインフレート) する必要がある構造に関する仕様を提供することだけです。最終的な結果として、適切なレイアウト パラメータとともに子(のサブクラス) への参照を持つ実際のオブジェクト ( のサブクラス) が作成されます。View
LinearLayout
View
TextView
View
上記をプログラムで (つまり、XML からインフレートするのではなく、オブジェクトのインスタンスを作成し、そのメソッドを使用して) 行うには、次のようにします (これも単純化します)。
LinearLayout container = new LinearLayout(this);
TextView tv = new TextView(this);
tv.setText("hello");
container.addChild(tv); // Simple example - usually you'd specify layout parameters
setContentView(container);
私が言っている基本的なポイントは、非常に簡単に言えば、レイアウト XML ファイルは、システムに階層の作成方法を伝えるために使用できる一種の「スクリプト」と考えることができるということですViews
。オブジェクトのインスタンスをプログラムで作成View
し、それらに対して適切なメソッドを呼び出すことで、まったく同じ結果を作成できます。View
どちらのルートをたどっても、最終結果は同じです。ビュー階層を表すメモリ内 のオブジェクトの束です。
XML レイアウト属性名は対応するメソッド名と必ずしも同じではないことがわかりますが、関連する API ドキュメントを使用して、特定のメソッドに対応する XML 属性文字列を確認できます。たとえば、LinearLayout
すべてのメソッドと XML 属性の詳細については、API ドキュメントを参照してください。
必要なビューを作成できます
直線的なレイアウト
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
テキスト ビュー
final TextView tv = new TextView(this); tv.setBackgroundColor(0xFFFF00FF); tv.setTextColor(0xFF000000); tv.setTypeface(null, Typeface.BOLD); tv.setText("Where is Fred?"); tv.setGravity(Gravity.CENTER_HORIZONTAL);
などなど。