Android 4.1.2上的Android应用程序获得了奇怪的布局

时间:2014-03-20 21:39:16

标签: android layout

我正在创建一个Android应用程序,它在android 4.2+上运行得很好 但是当我试图在Android 4.1及更早版本上运行它时会得到一个奇怪的布局 我在互联网上寻找它,但无法找到解决方案。 这个问题似乎只出现在Android 4.1.2及更低版本上,但在android 4.2.2上它的效果很好。 有什么想法吗?

截图: Android 4.2 +

Android 4.1及更低版本

我的布局xml代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:id="@+id/back"
              android:weightSum="1">
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="200dp"
        android:id="@+id/checkboxer"
        android:layout_below="@+id/textview2"
        android:layout_alignRight="@+id/textview"
        android:visibility="invisible">

        <CheckBox
            android:layout_width="363dp"
            android:layout_height="50dp"
            android:text="Home"
            android:id="@+id/home"
            android:layout_gravity="center_vertical"
            android:layout_below="@+id/mobile"
            android:visibility="invisible"
            android:textSize="40dp"
            android:textStyle="bold" />

        <CheckBox
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:text="Mobile"
            android:id="@+id/mobile"
            android:visibility="invisible"
            android:textSize="40dp"
            android:textStyle="bold" />

        <CheckBox
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:text="work"
            android:id="@+id/work"
            android:layout_alignParentEnd="false"
            android:layout_below="@+id/home"
            android:visibility="invisible"
            android:textStyle="bold"
            android:textSize="40dp" />
        <CheckBox
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:text="other"
            android:id="@+id/other"
            android:layout_below="@+id/work"
            android:visibility="invisible"
            android:textSize="40dp"
            android:textStyle="bold" />

        <WebView
                android:layout_width="fill_parent"
                android:layout_height="200dp"
                android:id="@+id/webView"
                android:visibility="invisible"
                android:background="@drawable/trans"
                android:layout_centerVertical="true"
                android:layout_alignParentLeft="true" />
    </RelativeLayout>
    <TextView
            android:layout_width="300dp"
            android:layout_height="100dp"
            android:id="@+id/textview"
            android:background="#5ea2ff"
            android:textSize="20dp"
            android:textColor="#FFFFFF"
        android:autoText="true"
        android:visibility="invisible"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true" />
    <TextView
            android:layout_width="300dp"
            android:layout_height="100dp"
            android:id="@+id/textview2"
            android:background="#58ff57"
            android:textSize="20dp"
            android:textColor="#FFFFFF"
            android:autoText="true"
         android:visibility="invisible"
        android:layout_below="@+id/textview"
        android:layout_alignParentStart="true"
        android:focusable="false"
        android:focusableInTouchMode="false" />
    <ImageButton
            android:layout_width="98dp"
            android:layout_height="102dp"
            android:id="@+id/imageButton" 
        android:layout_gravity="right"
        android:layout_weight="0.19"
            android:background="@drawable/ic_launcher"
        android:layout_alignParentBottom="true"
            android:layout_alignParentEnd="true"
            android:clickable="false"
            android:focusable="false" 
        android:layout_alignTop="@+id/imageButton2"/>

    <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/editText"
            android:layout_alignParentBottom="true"
            android:layout_alignParentStart="true"
            android:layout_toLeftOf="@+id/imageButton"
            android:text="@string/edit" 
        android:clickable="true"
        android:autoText="true" 
        android:enabled="false"
            android:editable="false" 
        android:background="@drawable/trans"
        android:textColor="#ff0008" />

    <ImageButton
            android:layout_width="98dp"
            android:layout_height="98dp"
            android:id="@+id/imageButton2"
            android:clickable="false"
            android:focusable="false"
            android:background="@drawable/enter" 
        android:layout_alignParentBottom="true"
            android:layout_alignParentEnd="true" 
        android:visibility="invisible"
        android:layout_alignParentRight="true" />
    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Text Input"
            android:id="@+id/button" 
        android:layout_above="@+id/editText" 
        android:layout_alignParentStart="true"
            android:background="#a3ffbb" 
        android:layout_toLeftOf="@+id/imageButton"/>

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:id="@+id/menubutton"
        android:layout_alignParentTop="false"
        android:layout_alignParentLeft="false"
        android:background="@drawable/ic_drawer" />
</RelativeLayout>

3 个答案:

答案 0 :(得分:2)

您使用的是layout_alignParentStartlayout_alignParentEnd,直到Android 4.2(API 17)才引入这些属性。您需要坚持使用旧的顶部,底部,左侧和右侧对齐父属性或找到另一个锚点。

答案 1 :(得分:0)

仅供记录,不仅 layout_alignParentStart layout_alignParentEnd ,所有开始/结束布局参数在Android上崩溃4.1.2设备( marginStart / marginEnd paddingStart / paddingEnd ...)。 只需更改 / 正确即可,但忘记了RTL兼容性

答案 2 :(得分:0)

我在app x的ImageButton中使用了这个属性“layout_alignParentStart”。并且发现它在大多数设备上运行良好,但在oppo x907上崩溃。但根据http://developer.android.com/training/basics/supporting-devices/platforms.html,它不会导致崩溃。所以我认为有时是因为某些特殊设备没有良好的兼容性。