当我换手机时,我的应用程序看起来不同

时间:2016-08-23 17:54:23

标签: android xml

我已经创建了我的Android应用程序。该应用程序已完成,但这是一个问题:当我在其他智能手机中安装此应用程序时,通常在屏幕中的对象重叠或不在原始位置。 我的IDE是Android Studio 2.2

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <pl.pawelkleczkowski.customgauge.CustomGauge
        android:id="@+id/gaugePH"
        android:layout_width="180dp"
        android:layout_height="180dp"
        android:paddingBottom="5dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:paddingTop="5dp"
        app:gaugePointStartColor="@color/md_red_900"
        app:gaugePointEndColor="@color/md_red_900"
        app:gaugePointSize="5"
        app:gaugeStartAngle="135"
        app:gaugeStrokeCap="ROUND"
        app:gaugeStrokeColor="@color/md_grey_400"
        app:gaugeStrokeWidth="10dp"
        app:gaugeStartValue="0"
        app:gaugeEndValue="14"
        app:gaugeSweepAngle="270"
        android:layout_alignTop="@+id/gaugePressione"
        android:layout_alignParentEnd="true"
        android:layout_marginRight="10dp"/>

    <pl.pawelkleczkowski.customgauge.CustomGauge
        android:id="@+id/gaugePressione"
        android:layout_width="180dp"
        android:layout_height="180dp"
        android:paddingBottom="5dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:paddingTop="5dp"
        app:gaugePointStartColor="@color/md_blue_900"
        app:gaugePointEndColor="@color/md_blue_900"
        app:gaugePointSize="5"
        app:gaugeStartAngle="135"
        app:gaugeStrokeCap="ROUND"
        app:gaugeStrokeColor="@color/md_grey_400"
        app:gaugeStrokeWidth="10dp"
        app:gaugeStartValue="0"
        app:gaugeEndValue="15"
        app:gaugeSweepAngle="270"
        android:layout_marginTop="39dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="10dp"/>

    <TextView
        android:id="@+id/textPH"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0.0"
        android:textSize="30dp"
        android:textStyle="bold"
        android:layout_alignRight="@+id/textStrPH"
        android:layout_marginTop="100dp"/>

    <TextView
        android:id="@+id/textPressione"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0.0"
        android:textSize="30dp"
        android:textStyle="bold"
        android:layout_alignRight="@+id/textStrPressione"
        android:layout_marginTop="100dp" />

    <TextView
        android:id="@+id/textStrPressione"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Bar"
        android:textSize="30dp"
        android:textStyle="italic"
        android:layout_below="@+id/textPressione"
        android:layout_alignLeft="@+id/gaugePressione"
        android:layout_marginLeft= "70dp"
        android:textColor="@color/md_black_1000"/>

    <TextView
        android:id="@+id/textStrPH"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="PH"
        android:textSize="30dp"
        android:textStyle="italic"
        android:layout_alignRight="@+id/gaugePH"
        android:layout_alignBottom="@+id/textStrPressione"
        android:layout_marginRight= "70dp"
        android:textColor="@color/md_black_1000"/>

    <Button
        android:id="@+id/goMaps"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Mappa"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:layout_marginBottom="10dp"
        android:layout_marginRight="10dp"/>

    <TextView
        android:id="@+id/textTemperatura"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0.0"
        android:textSize="30dp"
        android:textStyle="bold"
        android:layout_alignTop="@+id/textUmidita"
        android:layout_alignRight="@+id/textStrPressione"/>

    <TextView
        android:id="@+id/textStrTemperatura"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="°C"
        android:textSize="30dp"
        android:textStyle="italic"
        android:layout_marginLeft= "70dp"
        android:textColor="@color/md_black_1000"
        android:layout_alignRight="@+id/textPressione"
        android:layout_alignTop="@+id/textTemperatura"
        android:layout_marginTop="40dp"
        android:layout_marginRight="10dp"/>

    <TextView
        android:id="@+id/textUmidita"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0.0"
        android:textSize="30dp"
        android:textStyle="bold"
        android:layout_alignRight="@+id/textPH"
        android:layout_alignTop="@+id/gaugeUmidita"
        android:layout_marginTop="60dp"/>

    <TextView
        android:id="@+id/textStrUmidita"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="%"
        android:textSize="30dp"
        android:textStyle="italic"
        android:layout_marginLeft= "70dp"
        android:textColor="@color/md_black_1000"
        android:layout_marginRight="10dp"
        android:layout_alignBaseline="@+id/textStrTemperatura"
        android:layout_alignBottom="@+id/textStrTemperatura"
        android:layout_alignEnd="@+id/textStrPH" />

    <pl.pawelkleczkowski.customgauge.CustomGauge
        android:id="@+id/gaugeUmidita"
        android:layout_width="180dp"
        android:layout_height="180dp"
        android:paddingBottom="5dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:paddingTop="5dp"
        app:gaugePointStartColor="@color/md_red_900"
        app:gaugePointEndColor="@color/md_red_900"
        app:gaugePointSize="5"
        app:gaugeStartAngle="135"
        app:gaugeStrokeCap="ROUND"
        app:gaugeStrokeColor="@color/md_grey_400"
        app:gaugeStrokeWidth="10dp"
        app:gaugeStartValue="0"
        app:gaugeEndValue="100"
        app:gaugeSweepAngle="270"
        android:layout_alignTop="@+id/gaugeTemperatura"
        android:layout_alignParentEnd="true"
        android:layout_marginRight="10dp" />

    <pl.pawelkleczkowski.customgauge.CustomGauge
        android:id="@+id/gaugeTemperatura"
        android:layout_width="180dp"
        android:layout_height="180dp"
        android:paddingBottom="5dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:paddingTop="5dp"
        app:gaugePointStartColor="@color/md_blue_900"
        app:gaugePointEndColor="@color/md_blue_900"
        app:gaugePointSize="5"
        app:gaugeStartAngle="135"
        app:gaugeStrokeCap="ROUND"
        app:gaugeStrokeColor="@color/md_grey_400"
        app:gaugeStrokeWidth="10dp"
        app:gaugeStartValue="-20"
        app:gaugeEndValue="50"
        app:gaugeSweepAngle="270"
        android:layout_marginTop="13dp"
        android:layout_marginLeft="10dp"
        android:layout_below="@+id/gaugePressione"
        android:layout_alignParentStart="true" />

    <TextView
        android:id="@+id/textImpianto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Impianto:"
        android:textSize="30dp"
        android:textStyle="bold"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="10dp"
        android:layout_marginBottom="10dp"/>

    <TextView
        android:id="@+id/textCodImpianto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0"
        android:textSize="30dp"
        android:textStyle="bold"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="145dp"
        android:layout_marginBottom="10dp"/>

</RelativeLayout>

3 个答案:

答案 0 :(得分:0)

没有一个简单的答案,但请在https://developer.android.com/training/multiscreen/screensizes.html

开始阅读支持不同的屏幕尺寸文档

答案 1 :(得分:0)

这是因为您使用硬编码值来表示高度和宽度。这些值有dp - 密度像素。由于屏幕不同,这些屏幕上的像素也会不同,因此这些值“不起作用”。

您应该尝试使用match_parent(它将填充父级中的所有空间)或wrap_content,它将仅使用所需的空间。通常宽度为match_parent,高度为wrap_content。

如果在该布局上有多个元素,您还可以尝试使用权重,这基本上会为每个元素提供一定的百分比。 想象一下,一个元素与android:weight =“1”,另一个元素与android:weight =“2”。这两个元素都会有不同的“百分比”。

答案 2 :(得分:0)

造成问题的观点有哪些? 其中是@id/goMaps@id/textCodImpianto还是@id/textImpianto? 以下是Android Studio编辑器对此的评价(一旦我用资源替换了硬编码文本):

@id/goMaps can overlap @id/textCodImpianto if @string/_0, @string/mappa grow due to localized text expansion less... (Ctrl+F1) If relative layout has text or button items aligned to left and right sides they can overlap each other due to localized text expansion unless they have mutual constraints like toEndOf/toStartOf

替换文字大小随屏幕尺寸的变化而变化(在这种情况下效果相同),并且您至少有一个解释为什么您的某些视图重叠或移动。

至少,你缺乏一些限制。