2011-08-12 6 views
1

私の最初の "ゲーム"のUIを開発するのに問題があります。初めてのAndroid UIのヘルプ

ここはスクリーンショットです。

screen shot

私はTableRowsとTableLayoutが含まれているのLinearLayoutを使用しています。要素の位置を制御するのはとても退屈で難しいようです。

たとえば、物事を整列させるために、空のTextViewを挿入して、他の要素を所定位置に「プッシュ」します。

また、ボタンにパッドを追加して、希望のサイズにすることもできました。

これを行うには良い方法がありますか?

ありがとうございます!

+0

があなたのXMLコードを投稿してください空TextViewsを追加するためとして - これは間違いなく(私は水平方向のスペースを必要とするときしかし、私は頻繁に目に見えないビューを使用します)悪い習慣です – Phil

答えて

9

あなたは間違いなくこれにRelative Layoutを使用したいと思っています。

各ボタンと他のボタンとの関係を指定することができます。

あなたの現在のUIを開発することを絶対に避けてください。 TextViewsは、Androidのさまざまなディストリビューションに応じてサイズが異なりますが、テストしたデバイスの外観だけが正しいと思われます。

EDIT:子供にlayout_weight = "Y":

あなたは空のスペースが必要な場合は、親ビューとAndroidでXML属性android:weightSum="x"を使用しています。これにより、layout_heightとlayout_widthに割り当てられたスペースを子供が占める(y/x)ようになります。

EDIT:

私は、このためのアドバイスの別の良いビットがあなたの「方向」ボタンのようなもののために、個々のレイアウトを使用することだと思います。個々に移動するのではなく、画面上のグループをグループとして扱うことができます。

+0

RelativeLayoutではなく、要素を上から下に表示しますか?RelativeLayoutを使用すると、私のスクリーンショットのようになりますか?上のテキストのように、左、ボタンコントロールは右にありますか? - ありがとう! – SkyeBoniwell

+2

マージンとパディングを使用し、各ビューを別のビューと相対的にレイアウトします。 – Jack

+0

最新のSDKツールのビジュアルエディタは優れています。要素をドラッグアンドドロップして、必要な場所に配置すると、relativeLayoutタグをすべて自動的に埋めます。また、新しいユーザーとして、あなたの質問に対する回答を回答としてマークすることを忘れないでください。これにより、他のユーザーが正しい回答をより迅速に見つけることができます。 – Codeman

-2

使用AbsoluteLayout - それはあなたがすべての要素

http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts

<?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android" 
> 
<Button 
    android:layout_width="188px" 
    android:layout_height="wrap_content" 
    android:text="Button" 
    android:layout_x="126px" 
    android:layout_y="361px" 
    /> 
<Button 
    android:layout_width="113px" 
    android:layout_height="wrap_content" 
    android:text="Button" 
    android:layout_x="12px" 
    android:layout_y="361px" 
    /> 

+2

各デバイスと画面サイズに合わせて絶対レイアウトを維持しない限り、絶対レイアウトは使用しないでください。 –

+0

痛いでしょう。あなたはあなたのAVD /テストデバイスで完全に見えるようになりますが、別のデバイスで試してみてください。 – Jack

1

あなたがこの問題を解決するためにRelativeLayoutを使用する必要がありますを配置する場所を正確に述べることができます。私はあなたがしたいとしましょう...私は押され、押されていない行動のために自分のイメージを持っていたため、

が、私はAndroidのデフォルトのボタンを使用していませんでした...一度、同様の問題を通じて

を行ってきました東 "ボタン"を配置します。

public void addEastImageView(RelativeLayout myBackgroundLayout, ImageView center, ImageView east, int leftPadding, int topPadding, int rightPadding, int bottomPadding){ 
     RelativeLayout.LayoutParams rightSide = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     rightSide.addRule(RelativeLayout.RIGHT_OF, center.getId()); 

     east.setPadding(leftPadding, topPadding, rightPadding, bottomPadding); 
     myBackgroundLayout.addView(east, rightSide); 
} 

"center"と呼ばれるImageViewは、画像内で "i"と呼ばれるものになります。パディングパラメータを使用すると、ImageView間の距離を制御できます。 "西"、 "南"、 "北"の各ボタンを追加するには、このような関数を作成することができます。パラメータ "RelativeLayout.RIGHT_OF"を "RelativeLayout.LEFT_OF"、 "RelativeLayout.BELLOW"、および " RelativeLayout。画像を表示するには、例えば、setBackgroundResourceでImageViewの "image"を変更し、必要な他のロジック動作を設定することができます。 。。

はそれが役に立てば幸い:D