0

画像の背景の事前定義された場所にビューのコレクションを配置したいと考えています。

このような: ここに画像の説明を入力

上/左マージンまたは Android:TranslationX/Android:TranslationY を使用して、XML で各コーヒー カップ ビューの位置を設定できます。

アプリが異なるサイズの画面で起動すると、背景レイヤーが新しいレイアウトに引き伸ばされますが、ビューの上/左マージンを変更するにはどうすればよいですか?

理想的には、XML で各ビューの位置を左から x%、親の上から y% としてマークアップするだけです。(アニメーションはこのように少し動作します)。そのオプションは利用できないようです。

私が検討したいくつかの調査:

  • レイアウトの重み付けを使用します。垂直または水平の位置のみに関心がある場合、これで問題は解決しますが、両方を同時に行う方法がわかりません。

  • マージンを使用してカップを配置し、実行時にビューの上部/左マージンをスケーリングして、特定の参照画面サイズ用に設計します。これには、実行時に開始マージンを読み取り、それを参照画面の比率にリセットすることが含まれます。参照画面の幅が 1000 ピクセルで、幅が 750 ピクセルの画面で実行している場合、layoutParams を読み取り、左余白に (750/1000) を掛けて、結果の左余白をレイアウトに書き戻すことができます。しかし、getLayoutParams では余白のあるオブジェクトが表示されません。

  • これを機能させるのに最も近いのは、android:translationX と android:translationY を設定することです。原則として、これらの値を XML の参照画面 (たとえば 10.1 インチのタブレット) で機能するように設定し、実際に使用しているデバイスに合わせてこれらの値をスケーリングするだけでよいはずです。この方法では、適切な結果を得ることができませんでした。 -and-error 私は、Galaxy 10.1" タブの XML に生の値を設定し、Galaxy nexus (横向き) で実行している場合、getTranslationX/Y() の値に 900 を追加する必要があることを発見しました。正しく表示されました。しかし、900 は単なる恣意的な数字であり、もちろんそれらを追加すると 10.1 インチ タブの位置が台無しになるため、解決策にはなりません。

XML またはプログラムによるソリューションのいずれかで問題ありません。

4

1 に答える 1

0

相対レイアウトを使用すると、アイコンを配置したい場所に相対的に配置できます。

透明な画像を作成し、それらをマップに対応する場所にスライスしてから、相対レイアウトを使用してそこに配置できます。

これはばかげた解決策かもしれません...しかし、それは私にとってはうまくいきました。

画像が載せられないので、文字で説明してみます。(ごめん!!!)

------------------------------a

            I

------私-------------------a

       I            I

---私--------------------私---a

('a's は無視してください) 各ボックスは透明な画像のスライスを表します。アイコンを「I」または好きな場所に配置します

(またすみません!!!)

于 2013-12-16T20:37:38.217 に答える