-2

私は Android プログラミングの初心者です (ただし、C の専門家であり、Java の中級者です)。

新しいプロジェクトを作成するときに Eclipse が自動的に生成するデフォルトの RelativeLayout で setContentView() を実行しようとすると、アプリがクラッシュする理由がわかりません。

エミュレーターと電話の両方でクラッシュします。

しかし、レイアウトを LinearLayout に変更すると、完全に正常に動作します。

なぜこれが起こるのかを明確に説明できる人はいますか?

ありがとう

4

2 に答える 2

1

まず、レイアウトについて説明し、与えられた例に従います。

次に、他のコントロールを整理する便利なレイアウト コントロールに注目しましょう。最も一般的に使用されるレイアウト クラスは次のとおりです。

FrameLayout – 子ビュー コントロールのスタックを表示するように設計されています。このレイアウトには、複数のビュー コントロールを追加できます。これは、同じ画面スペース内に複数のコントロールを表示するために使用できます。

LinearLayout – 子 View コントロールを 1 行または 1 列に表示するように設計されています。これは、フォームを作成するための非常に便利なレイアウト方法です。

RelativeLayout – 子の View コントロールを相互に関連付けて表示するように設計されています。たとえば、一意の識別子によって参照される別のコントロールの「上」または「下」または「左」または「右」にコントロールを配置するように設定できます。親の端を基準にして、子のビュー コントロールを整列させることもできます。

TableLayout – 子の View コントロールを行と列に編成するように設計されています。テーブルの各行に TableRow レイアウト ビュー (基本的には水平方向の LinearLayout) を使用して、個々の View コントロールがテーブルの各行に追加されます。

相対的なレイアウトについては、次のコードを試してください。

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical" >
    <LinearLayout
        android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical"
            android:padding="5dp">
        <TextView
                android:id="@+id/textMsg"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textColor="#000000"
                android:textSize="14dp" />
    </LinearLayout>


<Button
    android:id="@+id/btn2"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:text="Contacts"
    android:textColor="#342D7E" />

<Button
    android:id="@+id/btn1"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:text="Send"
    android:textColor="#342D7E" />

<EditText
    android:id="@+id/edittext1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/btn2"
    android:layout_alignParentLeft="true"
    android:ems="10"
    android:hint="Type a Message"
    android:maxLines="5" >

    <requestFocus />
</EditText>
</RelativeLayout>

また壊れたら教えて

于 2012-12-03T14:43:50.100 に答える