每当我在模拟器中打开它时,我的布局都会变得混乱(它是带有textviews的背景图像)

时间:2015-03-03 00:18:38

标签: android xml android-layout background android-studio

对于我的项目我使用背景图片,所以我可以放入隐形按钮.. 但问题是当我在模拟器中打开活动时,它只是一个沙拉(文本视图与按钮等混合..)

<EditText
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:id="@+id/firstname"
    android:inputType="text"
    android:layout_marginTop="57dp"
    android:layout_alignParentTop="true"
    android:layout_alignLeft="@+id/lastname"
    android:layout_alignStart="@+id/lastname" />

<EditText
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:id="@+id/lastname"
    android:inputType="text"
    android:layout_below="@+id/firstname"
    android:layout_alignRight="@+id/spinner"
    android:layout_alignEnd="@+id/spinner" />

<EditText
    android:layout_width="230dp"
    android:layout_height="wrap_content"
    android:id="@+id/email"
    android:inputType="text"
    android:layout_below="@+id/lastname"
    android:layout_alignRight="@+id/lastname"
    android:layout_alignEnd="@+id/lastname" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPassword"
    android:ems="10"
    android:id="@+id/password"
    android:layout_marginTop="35dp"
    android:layout_below="@+id/email"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPassword"
    android:ems="10"
    android:id="@+id/confirmPasswordEditText"
    android:layout_marginTop="35dp"
    android:layout_below="@+id/password"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<EditText
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:ems="10"
    android:id="@+id/age"
    android:layout_alignBottom="@+id/spinner"
    android:layout_toLeftOf="@+id/imageViewUser"
    android:layout_toStartOf="@+id/imageViewUser" />

<Spinner
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:id="@+id/spinner"
    android:entries="@array/choose"
    android:prompt="@string/genders"
    android:layout_below="@+id/confirmPasswordEditText"
    android:layout_toRightOf="@+id/confirmPasswordEditText"
    android:layout_toEndOf="@+id/confirmPasswordEditText" />

<Button
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/joinus"
    android:id="@+id/signUpButton"

    android:layout_alignParentBottom="true"
    android:layout_alignRight="@+id/spinner"
    android:layout_alignEnd="@+id/spinner" />

<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:id="@+id/imageViewUser"
    android:layout_below="@+id/age"
    android:layout_alignLeft="@+id/email"
    android:layout_alignStart="@+id/email" />

2 个答案:

答案 0 :(得分:1)

好的,我可以看到,你正在错误地使用布局ID。

例如,你有:

<EditText
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:ems="10"
    android:id="@+id/age"
    android:layout_alignBottom="@+id/spinner"
    android:layout_toLeftOf="@+id/imageViewUser"
    android:layout_toStartOf="@+id/imageViewUser" />

的行
android:layout_alignbottom="@+id/spinner"

应替换为

android:layout_alignbottom="@id/spinner"

没有&#39; +&#39;符号

这样,您就可以引用另一个布局而不是定义一个id值。

修改 以下是视图应该避免xml错误的示例:

<!-- This is the top-left-most layout in the view -->
<EditText
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:id="@+id/age" />

<!-- This layout will be shown BELOW the 'age' layout -->
<EditText
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:id="@+id/name"
    android:layout_below="@id/age" />

<!-- This layout will be shown TO THE RIGHT OF the 'age' layout -->
<EditText
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:id="@+id/birthday"
    android:layout_toRightOf="@id/age" />

现在,如果您尝试在@id/birthday EditText视图中引用@id/age,则会收到错误,因为布局还不了解@id/birthday 。它的定义低于@id/age

这有意义吗?

答案 1 :(得分:0)

@ Yasmin12,你好,我可以理解这里发生了什么,在你的布局“dp”引起了问题。使用“dip”代替它们将帮助您调试布局,因为它们会尝试将连贯的大小保持为多个屏幕分辨率,

               <ImageView
                android:id="@+id/avtar_animation_11"
                android:layout_width="45dip"
                android:layout_height="45dip"
                android:src="@drawable/avtar011"/>
当你给尺寸提供“dp”时,支持多个屏幕的同时,实际上android希望你为不同的屏幕分辨率提供不同的值。让我们说下面是你的想象维度在你的android项目中的res文件夹中创建几个文件夹,如下所示

enter image description here

values-hdpivalues-mdpivalues-ldpivalues-xhdpivalues-xxhdpi

并在其中创建每个dimens.xml文件并写入

<dimen name="image_view_width">28dp</dimen>
<dimen name="image_view_height">28dp</dimen>

现在我已经在这里提到了“dp”而不是dip想要我为不同的屏幕分辨率跟踪不同的尺寸,所以我将更改image_view_width和image_view_height值在单独的值文件夹中dimens.xml是位于。确保您的dp值根据您希望视图适合的屏幕分辨率而变化。

            <ImageView
            android:id="@+id/avtar_animation_11"
            android:layout_width="@dimen/image_view_width"
            android:layout_height="@dimen/image_view_height"
            android:src="@drawable/avtar011"/>

困难的部分现在已经结束了android将根据您的应用运行的屏幕选择dimens.xml个值中的一个,现在您的布局晃动