4

さまざまな解像度をサポートするには、「複数の画面のサポート」で説明されているように、レイアウトファイルのバリエーションを作成する必要があります。UIのさまざまな配置を表示する予定はなく、適切にストレッチしたい場合、バリエーションは主にさまざまな重みになります。少なくとも、これまでの私のアプリの場合はそうです。

では、この構造でアプリケーションを変更するにはどうすればよいでしょうか。レイアウトが何度も繰り返されるため、アプリケーションで1つのレイアウトを変更すると、複数のファイルが変更されます。

私は2つのオプションを考えました:

  1. コード内の値を動的に変更する
    • 欠点は、レイアウト関連の作業がコードに波及することです。私は本当にこれが好きではありません。
  2. 一般的なレイアウト要素を抽出するための子レイアウトの作成
    • 欠点は、レイアウトの階層がより深く、雑然としているため、何が起こっているのかを理解するのが難しくなることです。それでも、これはHierarchy Viewerのおかげでオプション#1よりも優れています。このアプローチが常に達成可能かどうかはわかりません。

あなたがこれを乗り越えるためにあなたのトリックを共有することができれば、それは大いにありがたいです。

4

1 に答える 1

1

私は解決策を見つけたと思います。他の人が親指をあきらめたら、私はそれを答えとして受け入れます。

「複数の画面のサポート」で説明されている構成修飾子は、に対してだけでなく、に対しても機能res/drawableするres/layoutことがわかりましたres/values。だから私の上でlayout/some_layout.xml、私はこのように言います:

<ImageButton
    android:id="@+id/imagePlay"
    android:layout_width="@dimen/button_size"
    android:layout_height="@dimen/button_size"
    android:scaleType="fitCenter"
    android:src="@drawable/play" />

次に、values/layout.xmlファイルでデフォルトを定義しますbutton_size

<resources>
    <dimen name="button_size">44dp</dimen>
</resources>

そしてvalues-xlarge/layout.xmlファイルであなたはxlargeモードを定義しますbutton_size

<resources>
    <dimen name="button_size">66dp</dimen>
</resources>

values他のリソースは試していませんが、スタイルとテーマでも機能すると思います。レイアウトのカスタマイズがサイズや太さより少し大きい場合は、値でスタイルを定義して使用できます。

于 2012-09-29T21:18:03.373 に答える