2016-08-26 15 views
2

画面要素(ボタン、ラベル、イメージなど)が画面上の特定の場所にピクセルまたは相対位置で表示されるように指定するにはどうすればよいですか?例えば、以下の仮定の場合:CN1のGUI要素の絶対位置を指定

  1. 画素350X 500Y
  2. 画面ダウン65%と左端から横切って40%を入れ、30%を占有する要素を中心とする素子画面の幅。
  3. 素子

の右側に25個の画素を配置すべき要素B Iは、GUIビルダー&レイアウトマネージャにいくつかのチュートリアルビデオを見て、開発者ガイドのいくつかの部分を読んしかし、どのように見ることができないましたこれらの一見基本的な作業を行います。

答えて

1

カスタムレイアウトマネージャからわずかなマージン設定に至るまで、すべてのツールを使用することができますが、それらの期待のほとんどは「間違っています」。

ピクセルまたはディップに基づいて物を配置することは、解像度/濃度が急激に変化するモバイルデバイスでは意味がありません。あなたのアプリは、iPhone 3gs 320x480または480x320(オプション1は無関係になります)でよく見える必要があります。そして、それはiPadプロ2732x2048でうまく見える必要があり、密度の差は3xです。つまり、標準ピクセルはiPadで3倍小さく見えますプロ!

ピクセルではなく、ディップ(ミリメートル)で考える必要があります。次に絶対的ではなく論理的に考えるようにポジショニングの視点を変える必要があります。あなたのポイントに関してはワークなど...

の左側の中心のような言葉、:彼らはさまざまなデバイス上で壊れるよう

  1. あなたは間違っているすべては多くの方法でこれを行うことができます。独自のレイアウトマネージャをexplained in the developer guideとして実装することができます。 余白をピクセル/ミリ単位で使用して、コンポーネントを位置に移動することもできます。

  2. マージンがパーセンテージ、ミリメートル、ピクセルをサポートするのと同じ回答です。幅/高さを決定するには、calcPreferredSize()メソッドをオーバーライドするだけですが、密度が画像/フォントサイズを大幅に変更するという事実と競合する可能性があるため、問題の概念です...

  3. これは、 3〜4ミリメートルのように、デバイス間で一貫して見えるでしょう。

+0

ありがとうございます。幅広く変化する画面サイズと解像度に関連してあなたの要点を得ます。しかしながら、スクリーンの寸法を知っている場合、配置される要素の特定のx、y位置を定義することができる。これを行う唯一の方法は、カスタムレイアウトマネージャなしでCN1にマージンを使用することですか?要素のサイズが動的に変化しているとします。マージンは、中心とは対照的にオブジェクトのエッジの位置を指定するのであまり有用ではありません。私たちは、要素の現在のサイズに基づいてエッジがどこにあるかを計算することができました。利用可能であれば、これはちょっとしたものです。 – SolStack

+0

"次元を知っていると仮定すると"コードネームワンはまったく異なるプラットフォームをサポートするように設計されていると仮定することができます。わかりやすいユースケースを簡単にするために、コードネームワンを設計しました。 X/Yの位置を簡単にすることはユースケースの99%に意味をなさないので、意味を成さないものを「エレガントな」ものにすることはチャーターにはありません。Codename Oneはモバイル向けに設計されているため、デバイスのローテーションと幅広い密度で1日目から対応しました。可変サイズはまさに私があなたのコメントを得ないようにあなたが絶対的なポジショニングをすることができないと説明した理由です。 –

+0

FYI特定のレイアウトを達成しようとしているときに問題が発生しているため(絶対位置でプロトタイプを作成しようとしている)、コースをやり直して、達成しようとしているレイアウトをカバーする質問を提出することをおすすめします。私はCodename Oneの "this"(モックアップ/スクリーンショットである)レイアウトをしようとしています。それ、どうやったら出来るの? –

関連する問題