2012-08-30 56 views
0

好吧,所以我決定帶Google課程去學習droid文件。我決定不使用簡單的輸入框和按鈕,而是使用多個按鈕,並且每個按鈕都顯示一組顏色。問題是它堵塞了一條線上的所有輸入框,而不是它們自己的單獨線路。這是我在activity_color.xml下一行的Android輸入框

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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:orientation="horizontal" > 

<EditText android:id="@+id/edit_message_blue" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:hint="@string/edit_message_blue" /> 


<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button_send_blue" 
    android:onClick="sendMessageBlue" /> 

<EditText android:id="@+id/edit_message_orange" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:hint="@string/edit_message_orange" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button_send_orange" 
    android:onClick="sendMessageOrange" /> 

</LinearLayout> 

這是主要的java類

package com.example.color.texts; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.widget.EditText; 

public class ColorTexts extends Activity { 
public final static String EXTRA_MESSAGE = "com.example.colortexts.MESSAGE"; 

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

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_color_texts, menu); 
    return true; 
} 

/** Called when the user clicks the Send button for Blue */ 
public void sendMessageBlue(View view) { 
    Intent intent = new Intent (this, DisplayMessageActivity.class); 
    EditText editText = (EditText) findViewById(R.id.edit_message_blue); 
    String message = editText.getText().toString(); 
    intent.putExtra(EXTRA_MESSAGE, message); 
    startActivity(intent); 
} 

/** Called when the user clicks the Send button for Red */ 
public void sendMessageRed(View view) { 
    Intent intent = new Intent (this, DisplayMessageActivityRed.class); 
    EditText editText = (EditText) findViewById(R.id.edit_message_red); 
    String message = editText.getText().toString(); 
    intent.putExtra(EXTRA_MESSAGE, message); 
    startActivity(intent); 
} 


/** Called when the user clicks the Send button for Orange */ 
public void sendMessageOrange(View view) { 
    Intent intent = new Intent (this, DisplayMessageActivityOrange.class); 
    EditText editText = (EditText) findViewById(R.id.edit_message_orange); 
    String message = editText.getText().toString(); 
    intent.putExtra(EXTRA_MESSAGE, message); 
    startActivity(intent); 

} 
} 

現在,我想這個問題是如何可以告訴它開始一個新行,像Android這樣: layout_next =「1」或什麼(我知道這個不存在),還是我必須添加到公共類?比如製作另一個佈局文件並引用它?我非常懷疑後者會起作用。

編輯:每列出的指示,我覺得這是我應該如何去做,但只知道顯示第一行:(

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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:orientation="vertical" > 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <EditText android:id="@+id/edit_message_blue" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:hint="@string/edit_message_blue" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button_send_blue" 
    android:onClick="sendMessageBlue" /> 

</LinearLayout> 

<LinearLayout 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:orientation="horizontal" >  

<EditText android:id="@+id/edit_message_red" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:hint="@string/edit_message_red" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button_send_red" 
    android:onClick="sendMessageRed" /> 

</LinearLayout> 

<LinearLayout 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:orientation="horizontal" > 

<EditText android:id="@+id/edit_message_orange" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:hint="@string/edit_message_orange" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button_send_orange" 
    android:onClick="sendMessageOrange" /> 

</LinearLayout> 

</LinearLayout> 

回答

1

你的父母佈局設置爲android:orientation="horizontal"。這需要被設置爲android:orientation="vertical"

編輯:這裏是在Android文檔參考: http://developer.android.com/reference/android/widget/LinearLayout.html#attr_android:orientation

+0

當我改變,沒有任何輸入b的oxes顯示出來,只是發送按鈕,但按鈕的方向是正確的:D – TheMik

+0

編輯:我不知道按鈕現在在輸入框下方。我擺脫了重量=「1」,因爲我不相信它適用於垂直,並像寬度的match_parent的結果,但我不喜歡下面的按鈕。當然,有一種方法可以使一行上的一個輸入框和按鈕以及下一個輸入框和按鈕進行水平。 – TheMik

+0

絕對如此。您可以在主LinearLayout中以水平方向嵌套LinearLayout。因此,對於每個EditText/Button組合,您可以將它們水平佈置,並且每個子LinearLayout都將垂直佈局。 或者,您可以考慮使用TableLayout並將每個EditText/Button放入TableRow中。 – japino