Android GUI:布局管理器

时间:2014-06-23 23:34:32

标签: android xml

我正在学习布局管理器以改进我的应用程序设计。在大多数情况下,它确定没问题。我唯一想要的是将我的按钮定位得更高。我可以通过从布局管理器中删除3个按钮来实现这一点,但通过这样做,我在低分辨率设备上遇到了问题。 (按钮将自己定位在EditText字段上,或者将自己定位在底部的广告上)。我尝试了一些我在网上找到的东西,但我最终只破坏了布局。

这是我的XML文件:

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

    <LinearLayout
        android:id="@+id/linearLayout3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <LinearLayout
            android:id="@+id/textviewLayoutLeft"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TextView
                android:id="@+id/tvPpl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingBottom="10dp"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:paddingTop="20dp"
                android:text="Price Per Liter"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tvAvgConsumption"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingBottom="10dp"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:paddingTop="10dp"
                android:text="avg(l/100km)"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tvDistance"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:text="Distance (km)"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tvAmountOfPersons"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingBottom="10dp"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:paddingTop="10dp"
                android:text="# Persons"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/textView5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:paddingTop="20dp"
                android:text="Price Per Person"
                android:textStyle="bold" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/textfieldLayoutRight"
            android:layout_width="166dp"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <EditText
                android:id="@+id/textPrijsPerLiter"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="numberDecimal" />

            <EditText
                android:id="@+id/textVerbruik"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:ems="10"
                android:inputType="numberDecimal" />

            <EditText
                android:id="@+id/textAfstand"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="numberDecimal" />

            <EditText
                android:id="@+id/textAantalPersonen"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:ems="10"
                android:imeOptions="actionGo"
                android:inputType="numberDecimal" />

            <TextView
                android:id="@+id/textViewPPP"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="10dp"
                android:paddingTop="20dp"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="#ffff000f"
                android:textStyle="bold" />

        </LinearLayout>

    </LinearLayout>


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/linearLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="100dp"
            android:layout_marginTop="10dp"
            android:orientation="vertical">


            <Button
                android:id="@+id/btnBereken"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Calculate"
                android:textStyle="bold" />

            <Button
                android:id="@+id/btnReset"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Reset all textfields"
                android:textStyle="bold" />


            <Button
                android:id="@+id/btnLoad"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Load latest results"
                android:textStyle="bold" />

        </LinearLayout>

        <com.google.android.gms.ads.AdView
            android:id="@+id/adView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            ads:adSize="SMART_BANNER"
            ads:adUnitId="MY_ID" />
    </LinearLayout>

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

你可以:

  1. 放弃第二个线性布局并将按钮布局和广告布局移动到主布局。将广告布局粘贴到底部并在按钮布局之前声明它。将按钮调整设置为layout_below =“textfieldlayout”和layout_above =“ad”而不是layout_alignParentBottom =“true”。

  2. 考虑使用weightSum的线性布局。每个父布局都应该有weightSum = 100,每个孩子将分别拥有%的空间。从我的观点来看,这种方式将是最好的,因为视图将仅仅针对所有设备定位,甚至布局树深度也将保持不变。您只需将父布局更改为LinearLayout并设置权重。