0

Androidアプリ開発初心者です。のコードを書きましcheckboxたが、期待した結果が得られません。すべてcheckboxes同じ行に表示されます。checkboxそれぞれを別の行に表示するにはどうすればよいですか?

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<CheckBox 
    android:id="@+id/chechbox_bike"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Bike"
    android:onClick="onCheckboxClicked"/>

<CheckBox 
    android:id="@+id/chechbox_car"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Car"
    android:onClick="onCheckboxClicked"/>

<CheckBox 
    android:id="@+id/chechbox_office"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Office"
    android:onClick="onCheckboxClicked"/>

<CheckBox 
    android:id="@+id/chechbox_home"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Home"
    android:onClick="onCheckboxClicked"/>

<CheckBox 
    android:id="@+id/chechbox_locker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Locker"
    android:onClick="onCheckboxClicked"/>

MainActivity.java

package com.example.app;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.CheckBox;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void onCheckboxClicked(View view){
    boolean checked=((CheckBox) view).isChecked();
    switch (view.getId()){
    case R.id.chechbox_bike:
        if (checked)
            System.out.println("bike");
    case R.id.chechbox_car:
        if (checked)
            System.out.println("Car");
    case R.id.chechbox_home:
        if (checked)
            System.out.println("Home");
    case R.id.chechbox_locker:
        if (checked)
            System.out.println("Locker");
    case R.id.chechbox_office:
        if (checked)
            System.out.println("Office");
    }       
}
}

ありがとうございました

4

1 に答える 1

1

layout_toLeftOfまたはのような属性がありますlayout_below。参照されたチェックボックスの ID でそれらを使用します。

例えば:

<CheckBox 
    android:id="@+id/chechbox_bike"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Bike"
    android:onClick="onCheckboxClicked"/>

<CheckBox 
    android:id="@+id/chechbox_car"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Car"
    android:layout_below="@id/checkbox_bike"
    android:onClick="onCheckboxClicked"/>

android:layout_below="@id/checkbox_bike"2 番目のチェックボックスに追加した属性を参照してください。

簡単な説明: 相対レイアウトは、ビューを相互に「関連」して配置するために使用されます。情報がなければ、常に左上隅に表示されます。

RelativeLayout を LinearLayout に変更することもできます。ここで方向 (垂直または水平) を定義すると、新しい各ビューが前のビューの下または右側に配置されます (LinearLayout の方向によって異なります)。

于 2013-08-01T12:42:14.547 に答える