Android Studio中的片段在虚拟机中堆叠在一起

时间:2016-02-19 20:39:09

标签: java android xml android-fragments

我必须将我的单位转换器应用程序变成片段并使其正常工作。一切都编译好,所以我能够在虚拟机中运行它。唯一的问题是所有的xml视觉效果都堆叠在一起。我将提供代码和我虚拟机中的外观图片。请帮我修复我的问题,以便它们不会堆叠在一起。

content_unit_converter.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.plamen.unitconverter.UnitConverterActivity"
tools:showIn="@layout/activity_unit_converter">

   <fragment
    android:id="@+id/unitconverterfragment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:name="com.plamen.unitconverter.UnitConverterFragment"/>
<fragment
    android:id="@+id/unitcoverterdisplay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:name="com.plamen.unitconverter.UnitConverterDisplay"/>

</RelativeLayout>

fragment_unit_converter.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.plamen.unitconverter.UnitConverterActivity"
tools:showIn="@layout/activity_unit_converter">

<RadioGroup
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/TemperatureEditText"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/radioGroup">


    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="From Celsius to Farenheit"
        android:id="@+id/toFarenheitRadioButton"
        android:checked="true" />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="From Farenheit to Celsius"
        android:id="@+id/toCelsiusRadioButton"
        android:checked="false" />
</RadioGroup>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Convert"
    android:id="@+id/convertButton"
    android:layout_below="@+id/radioGroup"
    android:layout_centerHorizontal="true"/>

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinner1"
    android:spinnerMode="dropdown"
    android:layout_below="@+id/LengthEditText"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="false"
    android:layout_alignRight="@+id/LengthEditText"
    android:layout_alignEnd="@+id/LengthEditText"
    android:entries ="@array/length"

    />


<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="CONVERT"
    android:id="@+id/convertLength"
    android:layout_below="@+id/spinner1"
    android:layout_centerHorizontal="true"/>

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinner2"
    android:layout_below="@+id/AreaEditText"
    android:layout_centerHorizontal="true"
    android:entries ="@array/area"
    />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Convert"
    android:id="@+id/convertArea"
    android:layout_below="@+id/spinner2"
    android:layout_centerHorizontal="true"/>

</RelativeLayout>

fragment_unit_converter_display.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.plamen.unitconverter.UnitConverterActivity"
tools:showIn="@layout/activity_unit_converter">

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"
    android:ems="10"
    android:id="@+id/TemperatureEditText"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:hint="Enter Temperature" />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"
    android:ems="10"
    android:id="@+id/LengthEditText"
    android:hint="Enter Length"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"
    android:ems="10"
    android:id="@+id/AreaEditText"
    android:layout_below="@+id/convertLength"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:hint="Enter Area" />

</RelativeLayout>

这是我在虚拟机中运行它时的样子

enter image description here

这是我尝试android:layout_below之后的样子 它也是重复的,我不知道为什么。

enter image description here

1 个答案:

答案 0 :(得分:2)

通常,无论何时使用相对布局,都必须指定事物的去向。在线性布局中添加一个新的东西将它放在上一个元素的下方/旁边(取决于你的方向),但在相对布局中,这不会发生。

所以你有这个:

<fragment
android:id="@+id/unitconverterfragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.plamen.unitconverter.UnitConverterFragment"

/>
<fragment
android:id="@+id/unitcoverterdisplay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.plamen.unitconverter.UnitConverterDisplay"
/>

在这里你只是显示了2个片段,但没有说明哪个片段首先出现。

您可以添加此行或类似内容:

android:layout_below="@id/unitconverterfragment"

所以现在你有了这个:

<fragment
android:id="@+id/unitconverterfragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.plamen.unitconverter.UnitConverterFragment"

/>
<fragment
android:id="@+id/unitcoverterdisplay"
android:layout_below="@id/unitconverterfragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.plamen.unitconverter.UnitConverterDisplay"
/>

您可以将它放在下方,右侧,左侧,顶部等处......