表示領域を完全に管理したいAndroidアプリケーションがあるとしましょう。これにより、サブコントロールのサイズを調整できます(実行時に、XMLは使用できません。サブコントロールのサイズをその場で積極的に変更する必要があります)。
このアプリケーションは横向きでのみ実行され、キーボード入力は行われないため、使用可能な領域が変わることはありません。
表示するサイズは、この使用可能領域に基づいて計算されます。たとえば、1つのアイテムは使用可能領域の左半分を正確に占めることであり、右半分は他のアイテム間で厳密な比率で分割されます。フォントサイズも、アイテムに正しく収まるように調整されます。
私の最初の考えは、main.xmlにコンテンツのないグリッドレイアウトだけを提供することでしたが、最大サイズ(fill_parent
または同様のもの)に拡張するように構成されました。グリッドレイアウトを使用して物を配置しますが、サイズを制御することで、レイアウトマネージャーが物を表示する方法が決まります。
うまくいけば、適切な時間(初期化後、描画前)にグリッドレイアウトをクエリして解像度を取得し、それに基づいて将来のすべての描画を調整できます。
これを行うためのより良い方法はありますか?XMLはコンテンツをプレゼンテーションから分離することを目的としていますが、この特定のクライアントはレイアウトを完全に制御したいと考えており、必要に応じて、コードを実行できるデバイスを制限します(社内アプリなので、指示できます)。
私が持っていたもう1つの考えは、偽のサイズでXML内のすべてのサブコントロールを追加することでした(すべてが常に存在し、変更される可能性があるのはサイズだけです)。ただし、そうすることで、使用可能な領域を取得できなくなり、サイズをインテリジェントに調整できるかどうかはわかりません。