相对布局中的元素问题

时间:2016-08-10 14:59:10

标签: android android-layout android-studio

我是Android编程的新手,最近我发现我在我的应用程序中使用的许多图像导致OOM错误并导致我的app崩溃。所以马上删除了背景和所有图像的所有按钮和布局没有考虑任何事情,但后来意识到所有元素都已经超出了它们的位置,并被限制在一个具有非常低宽度的元素列表中,如下图所示,一个在另一个之下。

我如何安排他们 -

Original elements location etc..

他们现在的样子 -

How the elements became

我试图将整个项目还原到以前的时间,包括那些没有用的图像。我已经做了一些事情,比如完全格式化并再次安装Android工作室,这根本没有帮助.I在Android工作室中已经多次遇到过这类问题,比如我有时会在相对布局中拖动一个元素,我会面临类似的问题,但这可以通过一个简单的撤销来解决。但这次我没想过这样做

所以如果有人知道相对布局中的元素存在什么问题。请帮帮我。 三江源。

完整的XML文件 -

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="3dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:paddingTop="3dp"
tools:context="com.androgeekzz.pokemongo_bestguidetipsandtricks.MainActivity"
android:background="@drawable/blues">
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/scrollView3">
<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">


<ImageView
    android:layout_width="wrap_content"
    android:layout_height="200dp"
    android:id="@+id/imageView"
    android:background="@drawable/pokecover"
    android:layout_alignParentTop="true"
    android:contentDescription="@string/cover" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:layout_centerHorizontal="true"
        android:id="@+id/linearla1"
        android:layout_weight="1"
        android:layout_below="@+id/imageView"
        android:weightSum="2">

<Button
    android:layout_width="170dp"
    android:layout_height="170dp"
    android:id="@+id/basics"
    android:layout_below="@+id/imageView"
    android:layout_marginTop="2dp"
    android:onClick="basicsOnclick"
    android:background="@drawable/pokebige" />

<Button
    android:layout_width="170dp"
    android:layout_height="170dp"
    android:layout_marginLeft="4dp"
    android:id="@+id/advGuide"
    android:layout_toRightOf="@+id/basics"
    android:layout_below="@+id/imageView"
    android:layout_marginTop="2dp"
    android:onClick="advanceOnclick"
    android:background="@drawable/pokadva" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:id="@+id/linearla2"
        android:layout_centerHorizontal="true"
        android:layout_weight="1"
        android:layout_below="@+id/linearla1"
        android:weightSum="2">

<Button
    android:layout_width="170dp"
    android:layout_height="170dp"
    android:id="@+id/Tips"
    android:layout_below="@+id/basics"
    android:layout_marginTop="2dp"
    android:onClick="tipsOnclick"
    android:background="@drawable/pokettips" />

<Button
    android:layout_width="170dp"
    android:layout_height="170dp"
    android:layout_marginLeft="4dp"
    android:id="@+id/Tricks"
    android:layout_toRightOf="@+id/Tips"
    android:layout_below="@+id/advGuide"
    android:layout_marginTop="2dp"
    android:onClick="tricksOnclick"
    android:background="@drawable/poketrain" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:id="@+id/linearla3"
        android:layout_centerHorizontal="true"
        android:layout_weight="1"
        android:layout_below="@+id/linearla2"
        android:weightSum="2">

        <Button
            android:layout_width="170dp"
            android:layout_height="170dp"
            android:id="@+id/Resources"
            android:layout_below="@+id/basics"
            android:layout_marginTop="2dp"
            android:onClick="resourceLinksOnclick"
            android:background="@drawable/pokeres" />

        <Button
            android:layout_width="170dp"
            android:layout_height="170dp"
            android:layout_marginLeft="4dp"
            android:id="@+id/About"
            android:layout_toRightOf="@+id/Tips"
            android:layout_below="@+id/advGuide"
            android:layout_marginTop="2dp"
            android:onClick="aboutOnclick"
            android:background="@drawable/pokabout" />
    </LinearLayout>

</RelativeLayout>
</ScrollView>

1 个答案:

答案 0 :(得分:0)

有问题sum(1 for x,y in zip(a,b) if x == y) / float(len(a)) 对我来说很好。因为,它的宽度设置为ImageView,只要没有设置图像,它就会为0。但是,如果您提供任何图像,它应相应扩展。理想情况下,就像我看来,它的宽度应该是wrap_content,因为布局看起来最一致。

我还建议使用match_parentandroid:scaleType="center",因为在上图中,宽高比看起来并不理想。