2016-12-18 4 views
-2

私はAndroid Studioの助けを借りてScrollView内にRelativeLayoutを持つアプリケーションを作成しようとしています。 私はそれが私のように見えるように見えるようにするために必要なすべてのボタン、テキストフィールドとスピナーを追加しました。 しかし、アプリケーションをデバッグした後、RelativeLayoutはその高さを自動的に変更し、ボタン、テキストフィールド、およびスピナーを使用できなくしました。RelativeLayoutの高さを自動的に変更しないようにするにはどうすればいいですか?

これは、デバッグ後のアプリの画像です: App looks messed up

次のようにXMLファイルは次のとおりです。

<?xml version="1.0" encoding="utf-8"?> 
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/activity_main" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      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="fadi_christoph.pizzadeliveryapp.MainActivity"> 

      <TextView 
       android:id="@+id/tvAnrede" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_above="@+id/ET_Name" 
       android:layout_alignParentStart="true" 
       android:text="Anrede" 
       android:textAlignment="textStart" 
       android:textAllCaps="false" 
       android:textSize="14sp" /> 

      <RadioGroup 
       android:id="@+id/rgAnrede" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:layout_alignStart="@+id/ET_Name" 
       android:orientation="horizontal"> 

       <RadioButton 
        android:id="@+id/rbHerr" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="Herr" 
        android:textSize="14sp" /> 

       <RadioButton 
        android:id="@+id/rbFrau" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="Frau" 
        android:textSize="14sp" /> 

      </RadioGroup> 

      <TextView 
       android:id="@+id/tvName" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBaseline="@+id/ET_Name" 
       android:layout_alignBottom="@+id/ET_Name" 
       android:layout_alignParentStart="true" 
       android:text="Vor- und Nachname" 
       android:textSize="14sp" /> 

      <EditText 
       android:id="@+id/tfName" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentEnd="true" 
       android:layout_below="@+id/RG_Anrede" 
       android:layout_toEndOf="@+id/TV_Name" 
       android:ems="10" 
       android:hint="Vor- und Nachname" 
       android:inputType="textPersonName" 
       android:textSize="14sp" /> 

      <TextView 
       android:id="@+id/tvPost" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBaseline="@+id/ET_Post" 
       android:layout_alignBottom="@+id/ET_Post" 
       android:layout_alignParentStart="true" 
       android:text="Postleitzahl" 
       android:textSize="14sp" /> 

      <EditText 
       android:id="@+id/tfPost" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentEnd="true" 
       android:layout_alignStart="@+id/ET_Name" 
       android:layout_below="@+id/ET_Name" 
       android:ems="10" 
       android:hint="Postleitzahl" 
       android:inputType="numberDecimal" 
       android:textSize="14sp" /> 

      <TextView 
       android:id="@+id/tvOrt" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBaseline="@+id/ET_Ort" 
       android:layout_alignBottom="@+id/ET_Ort" 
       android:layout_alignParentStart="true" 
       android:text="Ort" 
       android:textSize="14sp" /> 

      <EditText 
       android:id="@+id/tfOrt" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentEnd="true" 
       android:layout_alignStart="@+id/ET_Post" 
       android:layout_below="@+id/ET_Post" 
       android:ems="10" 
       android:hint="Ort" 
       android:inputType="textPersonName" 
       android:textSize="14sp" /> 

      <TextView 
       android:id="@+id/tvStrasse" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBaseline="@+id/ET_Strasse" 
       android:layout_alignBottom="@+id/ET_Strasse" 
       android:layout_alignParentStart="true" 
       android:text="Straße" 
       android:textSize="14sp" /> 

      <EditText 
       android:id="@+id/tfStrasse" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentEnd="true" 
       android:layout_alignStart="@+id/ET_Ort" 
       android:layout_below="@+id/ET_Ort" 
       android:ems="10" 
       android:hint="Straße" 
       android:inputType="textPersonName" 
       android:textSize="14sp" /> 

      <TextView 
       android:id="@+id/tvHausnummer" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBaseline="@+id/ET_Hausnummer" 
       android:layout_alignBottom="@+id/ET_Hausnummer" 
       android:layout_alignParentStart="true" 
       android:text="Hausnummer" 
       android:textSize="14sp" /> 

      <EditText 
       android:id="@+id/tfHausnummer" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentEnd="true" 
       android:layout_alignStart="@+id/ET_Strasse" 
       android:layout_below="@+id/ET_Strasse" 
       android:ems="10" 
       android:hint="Hausnummer" 
       android:inputType="textPersonName" 
       android:textSize="14sp" /> 

      <TextView 
       android:id="@+id/tvRechnung" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentStart="true" 
       android:layout_below="@+id/ET_Hausnummer" 
       android:text="Rechnung" 
       android:textSize="14sp" /> 

      <RadioGroup 
       android:id="@+id/rgRechnung" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignStart="@+id/ET_Hausnummer" 
       android:layout_below="@+id/ET_Hausnummer" 
       android:orientation="horizontal"> 

       <RadioButton 
        android:id="@+id/rbPost" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="per Post" 
        android:textSize="14sp" /> 

       <RadioButton 
        android:id="@+id/rbEmail" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="per Email" 
        android:textSize="14sp" /> 

      </RadioGroup> 

      <TextView 
       android:id="@+id/tvFilter" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBottom="@+id/SP_Filter" 
       android:layout_alignParentStart="true" 
       android:text="suche nach" 
       android:textSize="14sp" /> 

      <Spinner 
       android:id="@+id/spinnerFilter" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentEnd="true" 
       android:layout_alignStart="@+id/RG_Rechnung" 
       android:layout_below="@+id/RG_Rechnung" /> 

      <TextView 
       android:id="@+id/tvPizza" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBottom="@+id/SP_Pizza" 
       android:layout_alignParentStart="true" 
       android:text="Auswahl der Pizza" 
       android:textSize="14sp" /> 

      <Spinner 
       android:id="@+id/spinnerPizza" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentEnd="true" 
       android:layout_alignStart="@+id/SP_Filter" 
       android:layout_below="@+id/SP_Filter" 
       android:spinnerMode="dialog" /> 

      <TextView 
       android:id="@+id/tvZusaetzen" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_above="@+id/RG_Bezahlen" 
       android:layout_alignParentStart="true" 
       android:text="Zusätzen" 
       android:textSize="14sp" /> 

      <Spinner 
       android:id="@+id/spinnerZusaetzen" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentEnd="true" 
       android:layout_alignStart="@+id/SP_Pizza" 
       android:layout_below="@+id/SP_Pizza" 
       android:spinnerMode="dialog" /> 

      <TextView 
       android:id="@+id/tvBezahlen" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentStart="true" 
       android:layout_below="@+id/SP_Zusaetzen" 
       android:layout_marginTop="11dp" 
       android:text="bezahlen" 
       android:textSize="14sp" /> 

      <RadioGroup 
       android:id="@+id/rgBezahlen" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignStart="@+id/SP_Zusaetzen" 
       android:layout_below="@+id/SP_Zusaetzen"> 

       <RadioButton 
        android:id="@+id/rbBar" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="bar bei Abholung" 
        android:textSize="14sp" /> 

       <RadioButton 
        android:id="@+id/rbKreditkarte" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="Kreditkarte" 
        android:textSize="14sp" /> 

       <RadioButton 
        android:id="@+id/rbSofort" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="Sofortüberweisung" 
        android:textSize="14sp" /> 

      </RadioGroup> 

      <TextView 
       android:id="@+id/tvPreis" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentStart="true" 
       android:layout_below="@+id/RG_Bezahlen" 
       android:layout_marginTop="16dp" 
       android:text="Preis" /> 

      <TextView 
       android:id="@+id/tvEuro" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBaseline="@+id/TV_Preis" 
       android:layout_alignBottom="@+id/TV_Preis" 
       android:layout_alignStart="@+id/RG_Bezahlen" 
       android:text="0,00 €" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btnSenden" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentStart="true" 
       android:layout_below="@+id/TV_Euro" 
       android:layout_marginTop="18dp" 
       android:text="Senden" /> 

      <Button 
       android:id="@+id/btnZuruecksetzen" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBaseline="@+id/BT_Senden" 
       android:layout_alignBottom="@+id/BT_Senden" 
       android:layout_toEndOf="@+id/BT_Senden" 
       android:text="Zurücksetzen" /> 

     </RelativeLayout> 

    </ScrollView> 

次のように私のプログラムの部分的なコードは次のとおりです。

package fadi_christoph.pizzadeliveryapp; 

    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.widget.ArrayAdapter; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.RadioButton; 
    import android.widget.Spinner; 
    import android.widget.TextView; 
    import android.view.View; 
    import android.widget.*; 
    import java.lang.String; 


    public class MainActivity extends AppCompatActivity { 

     private TextView tv_Anrede, tv_Name, tv_Post, tv_Ort, tv_Strasse, tv_Hausnummer, tv_Rechnung, tv_Filter, tv_Pizza, tv_Zusaetzen, tv_Bezahlen, tv_Preis, tv_Euro; 
     private RadioGroup rg_Anrede, rg_Rechnung, rg_Bezahlen; 
     private RadioButton rb_Herr, rb_Frau, rb_Post, rb_Email, rb_Bar, rb_Kreditkarte, rb_Sofort; 
     private EditText tf_Name, tf_Post, tf_Ort, tf_Strasse, tf_Hausnummer; 
     private Spinner spinner_Filter, spinner_Pizza, spinner_Zusaetzen; 
     private Button btn_Senden, btn_Zuruecksetzen; 

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

     private void InitializeApp() { 
      tv_Anrede = (TextView) findViewById(R.id.tvAnrede); 
      tv_Name = (TextView) findViewById(R.id.tvName); 
      tv_Post = (TextView) findViewById(R.id.tvPost); 
      tv_Ort = (TextView) findViewById(R.id.tvOrt); 
      tv_Strasse = (TextView) findViewById(R.id.tvStrasse); 
      tv_Hausnummer = (TextView) findViewById(R.id.tvHausnummer); 
      tv_Rechnung = (TextView) findViewById(R.id.tvRechnung); 
      tv_Filter = (TextView) findViewById(R.id.tvFilter); 
      tv_Pizza = (TextView) findViewById(R.id.tvPizza); 
      tv_Zusaetzen = (TextView) findViewById(R.id.tvZusaetzen); 
      tv_Bezahlen = (TextView) findViewById(R.id.tvBezahlen); 
      tv_Preis = (TextView) findViewById(R.id.tvPreis); 
      tv_Euro = (TextView) findViewById(R.id.tvEuro); 
      rg_Anrede = (RadioGroup) findViewById(R.id.rgAnrede); 
      rg_Rechnung = (RadioGroup) findViewById(R.id.rgRechnung); 
      rg_Bezahlen = (RadioGroup) findViewById(R.id.rgBezahlen); 
      rb_Herr = (RadioButton) findViewById(R.id.rbHerr); 
      rb_Frau = (RadioButton) findViewById(R.id.rbFrau); 
      rb_Post = (RadioButton) findViewById(R.id.rbPost); 
      rb_Email = (RadioButton) findViewById(R.id.rbEmail); 
      rb_Bar = (RadioButton) findViewById(R.id.rbBar); 
      rb_Kreditkarte = (RadioButton) findViewById(R.id.rbKreditkarte); 
      rb_Sofort = (RadioButton) findViewById(R.id.rbSofort); 
      tf_Name = (EditText) findViewById(R.id.tfName); 
      tf_Post = (EditText) findViewById(R.id.tfPost); 
      tf_Ort = (EditText) findViewById(R.id.tfOrt); 
      tf_Strasse = (EditText) findViewById(R.id.tfStrasse); 
      tf_Hausnummer = (EditText) findViewById(R.id.tfHausnummer); 
      spinner_Filter = (Spinner) findViewById(R.id.spinnerFilter); 
      spinner_Pizza = (Spinner) findViewById(R.id.spinnerPizza); 
      spinner_Zusaetzen = (Spinner) findViewById(R.id.spinnerZusaetzen); 
      btn_Senden = (Button) findViewById(R.id.btnSenden); 
      btn_Zuruecksetzen = (Button) findViewById(R.id.btnZuruecksetzen); 

      SPFilterSelectedLine(); 
     } 

     //Determine the chosen position of the filter spinner, convert its text to a string and pass it along: 
     private void SPFilterSelectedLine() { 
      //implement XML file "strings.xml" found in "app\src\main\res\values" 
      //ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.filter,android.R.layout.simple_spinner_item); 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.filter)); 
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinner_Filter.setAdapter(adapter); 

      //Get the position of the chosen element, convert it to text and pass it along 
      spinner_Filter.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
        if (!(view instanceof TextView)) 
         return; 
        TextView item = (TextView) view; 
        String TypeOfPizza = item.getText().toString(); 
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> parent) { 
       } 
      }); 
     } 
    } 

ArrayAdapterに使用するstrings.xmlファイルは、次のとおりです。

 <resources> 
     <string name="app_name">Pizza Delivery App</string> 

     <string-array name="filter"> 
      <item>vegetarische Pizzen</item> 
      <item>fischhaltige Pizzen</item> 
      <item>fleischhaltige Pizzen</item> 
      <item>fischhaltige und fleischhaltige Pizzen</item> 
     </string-array> 

     <string-array name="vegetarisch"> 
      <item>vegetarische Pizza 1</item> 
      <item>vegetarische Pizza 2</item> 
      <item>vegetarische Pizza 3</item> 
      <item>vegetarische Pizza 4</item> 
     </string-array> 

     <string-array name="fischhaltig"> 
      <item>fischhaltige Pizza 1</item> 
      <item>fischhaltige Pizza 2</item> 
      <item>fischhaltige Pizza 3</item> 
      <item>fischhaltige Pizza 4</item> 
     </string-array> 

     <string-array name="fleischhaltig"> 
      <item>fleischhaltige Pizza 1</item> 
      <item>fleischhaltige Pizza 2</item> 
      <item>fleischhaltige Pizza 3</item> 
      <item>fleischhaltige Pizza 4</item> 
     </string-array> 

     <string-array name="fischhaltig_und_fleischhaltig"> 
      <item>fischhaltige und fleischhaltige Pizza 1</item> 
      <item>fischhaltige und fleischhaltige Pizza 2</item> 
      <item>fischhaltige und fleischhaltige Pizza 3</item> 
      <item>fischhaltige und fleischhaltige Pizza 4</item> 
     </string-array> 
    </resources> 

問題がどのように見えるか誰でもわかりやすくなります。

+0

xmlを使用しようとしました - IDが不足しています。質問を更新してください。主な問題は、あなたが 'android:layout_below'の代わりに' android:layout_alignBottom'を使用しているようです。 –

+0

"ET_Name"はどこですか?それの定義はなく、すべての要素は同じものに対して整列しています。 –

+0

どのようになっているのかを示すモックアップ画像はありますか? –

答えて

0

私はあなたのXMLコードを試しました。 ScrollViewのルート要素をRelativeLayoutからLinearLayoutに変更しました。orientationverticalとなりました。 RelativeLayoutプロパティを削除する必要があります。

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/activity_main" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     android:orientation="vertical" 
     tools:context="fadi_christoph.pizzadeliveryapp.MainActivity"> 

     ... 


    </LinearLayout> 

</ScrollView> 
+1

@K Neeraj Lalもう一度0からプログラム全体を作り、あなたのアドバイスを使いました。今は完全に動作します。どうもありがとうございました :) – REDX16385

0

別の場所から高さを編集してください。時にはAndroidスタジオで私の前に見逃したエラーも出てくるのですが、このタイプのエラーを避けるために考えた唯一の方法は、ブロックメモのような普通のリーダーから編集することです。

関連する問題